[C con Clase] Borrar directorio temporal

Salvador Pozo salvador en conclase.net
Vie Oct 5 18:19:15 CEST 2007


El pasado 2007-10-05 10:18:02, Jandro escribió:
 
J> Hola a todos!
J> Tengo un directorio temporal donde guardo algunos ficheros que  
J> utilizo durante la ejecución de mi programa.
J> Lo que quiero es que antes de salir del programa me borre todo el  
J> directorio, como se hace esto?
J> Creo k primero hay k borrar los ficheros para poder borrar el  
J> directorio, pero no se bien como va, alguien me puede ayudar?

Hola:

Estaría bien saber qué función has usado para crear el directorio y los ficheros temporales. Lo digo porque hay funciones del API de Windows específicas para crear y destruir ficheros temporales.

CreateDirectory: Crea un directorio

BOOL CreateDirectory(
   LPCTSTR lpPathName, 
   LPSECURITY_ATTRIBUTES pSecurityAttributes);

El primer parámetro es el nombre del camino completo.
El segundo es un puntero a una estructura SECURITY_ATTRIBITES, y en general puede ser NULL.

RemoveDirectory: Lo destruye

BOOL RemoveDirectory(LPCTSTR lpPathName);

El parámetro indica el camino del directorio a borrar.
Como bien dices, el directorio debe estar vacío.

Ya que supongo que creas el directorio en el programa, debería ser relativamente sencillo controlar qué ficheros temporales has creado, de modo que puedan ser borrados cuando no sean necesarios, y una vez cerrados.

Una función que también puede ayudarte es:

UINT GetTempFileName(
    LPCTSTR lpPathName,	  // address of directory name for temporary file 
    LPCTSTR lpPrefixString,	// address of filename prefix 
    UINT uUnique,	  // number used to create temporary filename 
    LPTSTR lpTempFileName // address of buffer that receives the new filename 
   );

El primer parámetro es el nombre del directorio, el camino completo.
El segundo es un prefijo para el nombre del fichero, el nombre generado empezará con los tres primeros caracteres de ese prefijo.
El tercero es un entero que se convertirá a hexadecimal para completar el nombre del fichero.
Si este parámetro es distinto de cero, no se creará el fichero, ni se comprobará si el nombre es realmente único.
Si es cero, el sistema genera un número, y prueba repetidamente hasta que realmente se genera un nombre único. Además, crea el fichero, para evitar que otra llamada a la función genere el mismo nombre.
El cuarto parámetro se usa para retornar el nombre del fichero generado.

En cualquier caso, se debe crear el fichero.

Para borrar ficheros se usa:
BOOL DeleteFile(
    LPCTSTR lpFileName 	// pointer to name of file to delete  
   );

Y para crearlos: CreateFile:
http://winapi.conclase.net/curso/index.php?fun=CreateFile

Si no controlas los ficheros temporales que has creado, no podrás borrarlos todos, salvo que los busques uno a uno y los elimines.

Para buscarlos se usan las funciones:
FindFirstFile, FindNextFile y FindClose.

Puedes ver cómo usar estas funciones en este hilo:
http://listas.conclase.net/?gid=2&mnu=mensajes&ord=hilo&msg=42618&vaj=no&pag=1

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase