Sök…


Anmärkningar

Ada-standardbiblioteket tillhandahåller I / O för traditionella filer med text eller binär data, liksom I / O för strömma filer. Filer med binär data kommer att vara sekvenser av värden av en typ, medan strömfiler kan vara sekvenser av värden av möjligen olika typer.

För att läsa och skriva element av olika typer från / till strömma filer använder Ada underprogram som är betecknade med typers attribut, nämligen 'Read 'Write , 'Write 'Input , 'Input 'Output och 'Output . De två senare kommer att läsa och skriva matrisgränser, spela in diskriminerande och typtaggar, utöver den bara inmatning och utdata som Read och 'Write kommer att utföra.

Skapa och skriva till fil

Procedurerna Create , Put_Line , Close från paketet Ada.Text_IO används för att skapa och skriva till filen file.txt .

with Ada.Text_IO;

procedure Main is
   use Ada.Text_IO;
   F : File_Type;
begin
   Create (F, Out_File, "file.txt");
   Put_Line (F, "This string will be written to the file file.txt");
   Close (F);
end;

Resulterande fil file.txt

This string will be written to the file.txt

Skapa och skriva till en ström

Undertypernas strömorienterade attribut kallas för att skriva objekt till en fil, bara och använda binära standardrepresentationer.

with Ada.Streams.Stream_IO;

procedure Main is
   type Fruit is (Banana, Orange, Pear);
   type Color_Value is range 0 .. 255;
   type Color is record
      R, G, B : Color_Value;
   end record;

   Fruit_Colors : constant array (Fruit) of Color :=
     (Banana => Color'(R => 243, G => 227, B => 18),
      Orange => Color'(R => 251, G => 130, B => 51),
      Pear   => Color'(R => 158, G => 181, B => 94));

   use Ada.Streams.Stream_IO;

   F : File_Type;

begin
   Create (F, Name => "file.bin");
   for C in Fruit_Colors'Range loop
      Fruit'Write (Stream (F), C);
      Color'Write (Stream (F), Fruit_Colors (C));
   end loop;
   Close (F);
end Main;

Resulterande fil

00000000  00 2e f3 00 e3 00 12 00  01 2e fb 00 82 00 33 00
00000010  02 2e 9e 00 b5 00 5e 00                         

Öppna och läs från strömfil

Läs data från Skapa och skriva till en ström tillbaka till ett program.

with Ada.Streams.Stream_IO;

procedure Main is
   --
   --  ... same type definitions as in referenced example
   --
   Fruit_Colors : array (Fruit) of Color;

   use Ada.Streams.Stream_IO;

   F : File_Type;
   X : Fruit;
begin
   Open (F, Mode => In_File, Name => "file.bin");
   loop
      Fruit'Read (Stream (F), X);
      Color'Read (Stream (F), Fruit_Colors (X));
   end loop;
exception
   when End_Error =>
      Close (F);
   pragma Assert  -- check data are the same
     (Fruit_Colors (Banana) = Color'(R => 243, G => 227, B => 18) and
      Fruit_Colors (Orange) = Color'(R => 251, G => 130, B => 51) and
      Fruit_Colors (Pear)   = Color'(R => 158, G => 181, B => 94));
end Main;


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow