Zoeken…


Opmerkingen

De Ada-standaardbibliotheek biedt I / O van traditionele bestanden met tekst of binaire gegevens, evenals I / O van gestreamde bestanden. Bestanden van binaire gegevens zullen reeksen van waarden van een type zijn, terwijl streambestanden reeksen van waarden van mogelijk verschillende typen kunnen zijn.

Om elementen van verschillende typen te lezen en te schrijven van / naar bestanden te streamen, gebruikt Ada subprogramma's die worden aangeduid met de kenmerken van de typen, namelijk 'Read 'Write , 'Write 'Input , 'Input 'Output en 'Output . De laatste twee zullen arraygrenzen lezen en schrijven, discriminanten opnemen en typetags, naast de kale invoer en uitvoer die Read en 'Write zal uitvoeren.

Maken en schrijven naar bestand

De procedures Create , Put_Line , Close uit het pakket Ada.Text_IO wordt gebruikt om het bestand file.txt aan te maken en er naar te schrijven.

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;

Resulterend bestand file.txt

This string will be written to the file.txt

Maken en schrijven naar een stream

De stroomgeoriënteerde attributen van de subtypen worden opgeroepen om objecten naar een bestand te schrijven, kaal en met behulp van binaire standaardrepresentaties.

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;

Resulterend bestand

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                         

Openen en lezen van streambestand

Lees de gegevens van Create And Write To A Stream terug in een programma.

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow