¿Cómo construyo una operación de escritura de archivo atómico? El archivo debe ser escrito por un servicio de Java y leído por scripts de Python.
Para el registro, las lecturas son mucho mayores que las escrituras. Pero la escritura ocurre en lotes y tiende a ser larga. El tamaño del archivo equivale a mega bytes.Operaciones de escritura de archivos atómicos (plataforma cruzada)
Ahora mismo mi enfoque es:
- contenido del archivo de escritura a un archivo temporal en mismo directorio
- eliminar el archivo de edad
- Renombrar archivo temporal a nombre de archivo antiguo.
¿Es este el enfoque correcto? ¿Cómo se pueden evitar las condiciones en las que se elimina el archivo anterior, pero el nuevo nombre de archivo aún no se ha renombrado?
¿Estos lenguajes de programación (python y java) ofrecen construcciones para bloquear y evitar esta situación?
Nota al margen: parece que Java NIO.2 tiene un mejor soporte para esto (al menos en el nivel de API): http://openjdk.java.net/projects/nio/javadoc/java/nio/file/Path .html # moveTo% 28java.nio.file.Path,% 20java.nio.file.CopyOption ...% 29 –
Similar a http://stackoverflow.com/questions/1812115/how-to-safely-write-to -a-archivo –
@Pascal. Está en Java 7. Largo camino por recorrer ... :-( –