Recherche…


Remarques

La bibliothèque standard Ada fournit des E / S de fichiers traditionnels de données textuelles ou binaires, ainsi que des E / S de fichiers en streaming. Les fichiers de données binaires seront des séquences de valeurs d'un type, tandis que les fichiers de flux peuvent être des séquences de valeurs de types éventuellement différents.

Pour lire et écrire des éléments de différents types depuis / vers des fichiers de flux, Ada utilise des sous-programmes désignés par des attributs de type, à savoir 'Read , 'Write , 'Input et 'Output . Les deux derniers liront et écrivent les limites des tableaux, les discriminants d’enregistrement et les balises de type, en plus de l’entrée et de la sortie que Read et 'Write .

Créer et écrire dans un fichier

Les procédures Create , Put_Line , Close du package Ada.Text_IO de créer et d'écrire dans le fichier 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;

Fichier résultant file.txt

This string will be written to the file.txt

Créer et écrire dans un flux

Les attributs orientés flux des sous-types sont appelés pour écrire des objets dans un fichier, en utilisant des représentations binaires par défaut.

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;

Fichier résultant

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                         

Ouvrir et lire à partir d'un fichier de flux

Lisez les données de Create And Write To A Stream dans un programme.

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow