En los sistemas POSIX, el cambio de nombre (2) proporciona una operación de cambio de nombre atómico, incluida la sobrescritura del archivo de destino, si existe y si los permisos lo permiten.¿Es posible cambiar el nombre de un archivo atómico (con sobreescritura) en Windows?
¿Hay alguna forma de obtener la misma semántica en Windows? Sé acerca de MoveFileTransacted() en Vista y Server 2008, pero necesito esto para admitir Win2k y versiones posteriores.
La palabra clave aquí es atomic ... la solución no debe poder fallar de ninguna manera que deje la operación en un estado incoherente.
He visto a mucha gente decir que esto es imposible en win32, pero te pregunto, ¿de verdad?
Proporcione citas confiables si es posible.
@ Adam Davis - Si usted tiene el control del programa del lector, así como el escritor, se puede resolver de esta manera. Reader hace io.Directory ("FileDone _ *. Dat") y elige el # más alto en lugar de *. Write crea un archivo con el nombre "FileWriting.dat" y lo renombra a "FileDone_002.dat" ..003, 004, etc. Esto no solo resuelve el problema de la eliminación/cambio de nombre no atómico, ese solo cambio de nombre es atómico. y, si el archivo anterior se mantiene abierto, aún es posible actualizarlo. Los lectores pueden mirar un nuevo archivo basado en un temporizador si no se vuelve a abrir con cada operación. Los lectores pueden limpiar archivos viejos. – FastAl