[C con Clase] Rename

Programante programante en gmail.com
Mar Mayo 22 20:02:50 CEST 2007


Steven Davidson escribió:
> Hola Programante,
>
> El pasado 2007-05-22 14:06:55, Programante escribió:
>
> P> remove(oldname)
> P> rename(newname, oldname);
> P> Al menos en Windows, es necesario que no lo renombres a un fichero que 
> P> ya existe.
>
> Esto es correcto, pero el mensaje de error que da MS-Windows, en el caso que presentas, no es "permiso denegado" sino "fichero o directorio no existe" (o "no encontrado").
>   
Al contrario, el error es que existe: "Error al renombrar archivo: File 
exists"

Yo me inclinaría a que queda algún manipulador al fichero. Si newname 
está abierto no tiene problemas para renombrar, pero si lo está oldname, 
da acceso denegado.
Por otra parte, también es posible que lo tengas abierto con otro 
programa que sea el que no permite renombrarlo.

> P> Por otra parte, por los nombres que les das a los archivos, creo que 
> P> tienes los
> P> parámetros cambiados (quieres pasar la "nueva" base de datos al nombre 
> P> "oficial").
>
> Me temo que esto no es así; Ismael lo tiene correctamente escrito. El prototipo de 'rename()' es:
>
> int rename( const char *original, const char *nuevo );
>
>   

Exacto. Basándome a los nombres, supuse que copia los registros sin los 
borrados de Basededatos.txt a newname.txt y luego renombra newname.txt a 
Basededatos.txt




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