S. Stream Files - JulTob/Ada GitHub Wiki

Streams

Ada.Text_IO, Ada.Sequential_IO, Ada.Direct_IO, Ada.Streams.Stream_IO

Create

Crea un fichero físico con el nombre indicado por Name y lo asocia con la variable de manejo de ficheros indicada por File, dejándolo abierto en el modo indicado por Mode.

procedure Create(File : in out File_Type;
                 Mode : in File_Mode := default_mode;
                 Name : in String := "";
                 Form : in String := "");

El modo de apertura por omisión (Default_Mode) es Out_File (escritura) para los ficheros de texto, los secuenciales y las streams. Para los ficheros de acceso directo, es Inout_File (Lectura y escritura). Si Name es una ristra nula el fichero que se crea es temporal y se destruye al finalizar la ejecución. El parámetro Form generalmente no se usa; es un parámetro que depende del sistema y puede servir para cosas como proteger el fichero con una contraseña. Create puede lanzar las excepciones: Status_Error, si el fichero ya está abierto. Name_Error, si el valor de Name no es válido para identificar un fichero, o Use_Error, si el entorno no permite la creación de un fichero con ese nombre (siéndo un nombre válido) y valor de Form.

--  Se supone la existencia de una [cláusula de contexto](http://www.gedlc.ulpgc.es/docencia/NGA/Ada2005/ada/general/context_clause.html) ([with](http://www.gedlc.ulpgc.es/docencia/NGA/Ada2005/ada/reserved/with.html)/[use](http://www.gedlc.ulpgc.es/docencia/NGA/Ada2005/ada/reserved/use.html))
--  con la librería adecuada, de entre las listadas arriba
Fichero1, Fichero2 : File_Type;
...
Create (Fichero1, Name => S1); 
Create (Fichero2, Name => "c:\temp\unfichero.dat");

Open

Asocia el fichero físico con el nombre indicado por Name (que debe existir) con la variable de manejo de ficheros indicada por File, dejándolo abierto en el modo indicado por Mode.

procedure Open (File : in out File_Type;
                Mode : in File_Mode;
                Name : in String;
                Form : in String := "");

El modo de apertura puede ser: para los ficheros de texto, los secuenciales y las streams: In_File, Out_File o Append_File. Para los ficheros de acceso directo: In_File, Inout_File o Out_File. El parámetro Form generalmente no se usa; es un parámetro que depende del sistema y puede servir para cosas como proteger el fichero con una contraseña. Open puede lanzar las excepciones: Status_Error, si el fichero ya está abierto. Name_Error, si el valor de Name no es válido para identificar un fichero, o no existe un fichero físico con ese nombre, Use_Error, si el entorno no permite la apertura del fichero con ese nombre (siéndo un nombre válido) y valor de Form.

--  Se supone la existencia de una [cláusula de contexto](http://www.gedlc.ulpgc.es/docencia/NGA/Ada2005/ada/general/context_clause.html) ([with](http://www.gedlc.ulpgc.es/docencia/NGA/Ada2005/ada/reserved/with.html)/[use](http://www.gedlc.ulpgc.es/docencia/NGA/Ada2005/ada/reserved/use.html))
--  con la librería adecuada, de entre las listadas arriba
Fichero1, Fichero2 : File_Type;
...
Open (Fichero1, Out_File, Name => S1); 
Open (Fichero2, In_File, "c:\temp\otrofichero.dat");

Close

Cierra el fichero asociado con la variable de manejo de ficheros indicada por File.

procedure Close (File : in out File_Type);

Close lanza la excepción Status_Error si el fichero no está abierto.

--  Se supone la existencia de una cláusula de contexto with/use
--  con la librería adecuada, de entre las listadas arriba
Fichero1 : File_Type;
...
Open (Fichero1, Out_File, Name => S1); 
...
Close (Fichero1);

Reset

Reabre el fichero asociado con la variable de manejo de ficheros indicada por File en el modo indicado por Mode (el mismo en que estaba abierto si Mode se omite).

procedure Reset (File : in out File_Type[; Mode : in File_Mode);

Reset lanza la excepción Status_Error, si el fichero no está abierto y la excepción Use_Error si el sistema no permite realizar la operación de reapertura en el modo especificado.

--  Se supone la existencia de una cláusula de contexto with / use 
--  con la librería decuada, de entre las listadas arriba
Fichero1 : File_Type;
...
Open (Fichero1, Out_File, Name => S1); 
...
Reset (Fichero1);

Delete

Elimina el fichero físico asociado con la variable de manejo de ficheros indicada por File.

procedure Delete (File : in out File_Type);

Delete puede lanzar las excepciones: Status_Error, si el fichero no está abierto o Use_Error, si el sistema no permite eliminar el fichero.

--  Se supone la existencia de una cláusula de contexto with/use 
--  con la librería adecuada, de entre las listadas arriba
Fichero1, Fichero2 : File_Type;
...
Create (Fichero1, Name => S1); 
Create (Fichero2, Name => "c:\temp\unfichero.dat");

Mode

Devuelve el modo en el que está abierto el fichero asociado con la variable de manejo de ficheros indicada por File.

function Mode (File : in File_Type) return File_Mode;

Mode lanza la excepción Status_Error si el fichero no está abierto .

-- Se supone la existencia de una clausula de contexto (with/use)
--  con la librería adecuada, de entre las listadas arriba
Fichero1 : File_Type;
...
Open (Fichero1, Out_File, Name => S1); 
...
if Mode (Fichero1) = Out_File then
   Reset (Fichero1, In_File);
end if;

Name

Devuelve el Nombre del fichero que está abierto y asociado con la variable de manejo de ficheros indicada por File.

function Name (File : in File_Type) return String;

Name lanza la excepción Status_Error si el fichero no está abierto y la excepción Use_Error si es un fichero temporal sin nombre.

-- Se supone la existencia de una clausula de contexto with/use
--  con la librería adecuada, de entre las listadas arriba
Fichero1 : File_Type;
...
Open (Fichero1, Out_File, Name => S1); 
...
Put_Line (Name (Fichero1) = Out_File);

Is_Open

Devuelve True si el fichero representado por File está abierto y False en caso contrario.

function Is_Open (File : in File_Type) return Boolean;
-- Se supone la existencia de una clausula de contexto with/use
--  con la librería adecuada, de entre las listadas arriba
Fichero1 : File_Type;
...
Open (Fichero1, Out_File, Name => S1); 
...
if Is_Open (Fichero1) then
   Close (Fichero1);
end if;

End_Of_File

Devuelve True si se ha alcanzado el final del fichero representado por File y False en caso contrario.

function End_Of_File (File : in File_Type) return Boolean;
-- with/use...
Fichero : File_Type;
S1      : String := "Mi_Fichero.dat";
...
Open (Fichero, In_File, Name => S1); 
...
while Not End_Of_File (Fichero) loop
   ...
end loop;