F. Files - JulTob/Ada GitHub Wiki
Read File
-- Text file input.
-- Read and display a text file line by line.
with text_IO; use text_IO;
Procedure ReadFile is
File: File_type; -- File Handler
File_Name: String := "file.txt"; -- Unbounded String?
Line: String(1..150);
Last: Integer;
Begin
Open(File, IN_file, File_Name );
-- Ada.Text_IO.In_File -- is the File Usage mode
While NOT End_of_file( File ) loop
Get_line( File, Line, Last );
Put_line( Line( 1 .. Last ) );
End loop;
Close(File);
END ReadFile;
-- Create a file and write some text to it.
with text_io; use text_io;
With Ada.Directories; use Ada.Directories;
Procedure WriteFile is
File : File_type; -- File_type is defined in Text_io
begin
if Exists( "MyFile.txt" ) then
Put_Line("File already exists");
return;
End if;
Create( File, OUT_file, "MyFile.txt" );
Put_line( File, "# MyFile" );
Put_line( File, "> A sample text file.");
Put_line( File, " This program demonstrates how");
Put_line( File, " to create and write to a disk");
Put_line( File, " text file.");
Close(File);
End WriteFile;
with Ada.Command_Line;
with Ada.Exceptions;
with Ada.Streams.Stream_IO;
with Ada.Text_IO;
procedure Stream_IO is
File : Ada.Streams.Stream_IO.File_Type;
Stream : Ada.Streams.Stream_IO.Stream_Access;
begin
if Ada.Command_Line.Argument_Count /= 1 then
Ada.Text_Io.Put_Line
(File => Ada.Text_Io.Standard_Error,
Item => "USAGE: " & Ada.Command_Line.Command_Name &
" <input-file-name>");
Ada.Command_Line.Set_Exit_Status (Ada.Command_Line.Failure);
return;
end if;
declare
Filename : String renames Ada.Command_Line.Argument (1);
begin
Ada.Streams.Stream_IO.Open
(File => File,
Name => Filename,
Mode => Ada.Streams.Stream_IO.In_File);
exception
when E: others =>
Ada.Exceptions.Raise_Exception
(E => Ada.Exceptions.exception_Identity (E),
Message =>
" attempting to open file """ & Filename & """.");
end;
Stream := Ada.Streams.Stream_IO.Stream (File);
while not Ada.Streams.stream_IO.End_Of_File (File) loop
Ada.Text_Io.Put_Line
(Ada.Streams.stream_element'Image
(Ada.Streams.Stream_Element'Input (Stream)));
end loop;
Ada.Streams.Stream_IO.Close (File);
end Stream_IO;
IO Exceptions
while not Finish loop
begin
Line := ASU.To_Unbounded_String(Ada.Text_IO.Get_Line(File));
Ada.Text_IO.Put_Line(ASU.To_String(Line));
exception
when Ada.IO_Exceptions.End_Error =>
Finish := True;
end;
end loop;