Ricerca…


Osservazioni

La libreria standard Ada fornisce I / O di file tradizionali di testo o dati binari, nonché I / O di file in streaming. I file di dati binari saranno sequenze di valori di un tipo, mentre i file di flusso possono essere sequenze di valori di tipi possibilmente diversi.

Per leggere e scrivere elementi di tipi diversi da / per lo streaming di file, Ada utilizza sottoprogrammi contraddistinti dagli attributi dei tipi, ovvero 'Read 'Write , 'Write 'Input , 'Input 'Output e 'Output . Gli ultimi due leggeranno e scrivono limiti di array, discriminanti di record e tag di tipo, oltre agli input e output nudi che verranno Read e 'Write .

Crea e scrivi su file

Le procedure Create , Put_Line , Close dal pacchetto Ada.Text_IO vengono utilizzate per creare e scrivere nel file 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;

File risultante file.txt

This string will be written to the file.txt

Crea e scrivi su un flusso

Gli attributi orientati al flusso dei sottotipi sono chiamati a scrivere oggetti in un file, nudi e usando rappresentazioni di default binarie.

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;

File risultante

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                         

Apri e leggi dal file di flusso

Leggi i dati di Crea e scrivi su un flusso di nuovo in un 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow