Crear un fichero temporal

1897 vistas

En el API de Win32 encontramos algunas funciones que nos ayudaran a crear un fichero temporal: GetTempPath para obtener la carpeta temporal en curso, y GetTempFileName que nos permitirá crear un nombre de fichero único de forma fiable.



delphi
  1. {
  2.   Devuelve un nombre de fichero absoluto, aleatorio y en la carpeta temporal.
  3.   El prefijo (3 carácteres máx.), opcional, sirve para "aislar" los ficheros temporales de nuestra aplicación de las otras.
  4.   Si no se encuentra la carpeta temporal, se usará la carpeta de la aplicación.
  5. }
  6. function GetScratchName ( Const Prefix: String = 'TMP' ): String;
  7. var
  8.   Path, Name: Array[0..MAX_PATH] of char ;
  9. begin
  10.   // recuperamos carpeta temporal
  11.   if (GetTempPath(MAX_PATH, @Path) = 0) then
  12.     StrCopy(@Path, PChar(ExtractFileDir(Application.ExeName)));
  13.   // creación del fichero temporal único
  14.   if (GetTempFileName(@Path, PChar(Prefix), 0, @Name) = 0) then Result := EmptyStr
  15.   else Result := String(@Name);
  16. end;



A la salida de la función, el archivo devuelto existe, está vaco y lo podemos abrir para usar según nuestra conveniencia.

Atención: los ficheros creados de esta manera, no los borrará, por defecto, ni el SO ni Delphi, tendremos que ocuparnos manualmente.