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;