Skip to content

TFileStream, Flujo de datos en Delphi

TFileStream, es una clase descendiente de TStream. Ya que TStream es una clase abstracta, necesitamos de sus descendientes para gestionar diferentes tipos de datos como son los Archivos (Files).

Con TFileStream podemos grabar o leer datos del sistema de archivos del sistema operativo en cualquiera de sus tipos de almacenamiento.

A muchos programadores de años de experiencia, nos a costado horrores cambiar de los modos clásicos de manejo de archivos a estas nuevas clases, la ventaja de utilizar TFileStream con respect a los famosos Rewrite, WriteLn, etc, es que TFileStream controla de forma automática los buffer de disco, según el tamaño en su sistema operativo y nosotros nos olvidamos de este problema.

Ejemplo de TFileStream

En el siguiente ejemplo veremos el uso de TFileStream en una función para comprimir archivos:

Uses System.ZLib

...

procedure CompressFile(vFileInput, vFileOutput: string);
var
  vInput: TFileStream;
  vOutput: TFileStream;

  vZip: TZCompressionStream;
begin
  { Creamos los objetos vInput, vOutput, y el Compresor vZip }
  vInput := TFileStream.Create(vFileInput, fmOpenRead);
  vOutput := TFileStream.Create(vFileOutput + '.zip', fmCreate);

  vZip := TZCompressionStream.Create(clDefault, vOutput);

  { Comprimimos los datos y lo pasamos al archivo vOutPut }
  vZip.CopyFrom(vInput, vInput.Size);

  { Liberamos de memoria los objetos }
  vZip.Free;
  vInput.Free;
  vOutput.Free;
end;

El ejemplo está realmente claro del uso de TFileStream, solo creamos un objeto para leer el archivo a comprimir llamado vInput, y creamos otro de destino con el nombre del archivo .zip llamado vOutput.

Y por último creamos un objeto de tipo TZCompressionStream llamado vZip el cual comprime los datos y los graba en el archivo destino (vOutput).

Simple, a partir de aquí, el limite lo pone su imaginación.