Digamos que tiene un proceso externo para escribir archivos en algún directorio, y tiene un proceso separado tratando periódicamente de leer archivos de este directorio. El problema para evitar es leer un archivo que el otro proceso está actualmente escribiendo, por lo que estaría incompleto. Actualmente, el proceso que se lee utiliza una verificación mínima del temporizador de edad del archivo, por lo que ignora todos los archivos a menos que su última fecha de modificación tenga más de XX segundos de antigüedad.Cómo comprobar si un archivo está "completo" (escrito por completo) con Java
Me pregunto si hay una manera más clara de resolver este problema. Si el tipo de archivo es desconocido (podría tratarse de varios formatos diferentes), ¿hay alguna forma confiable de verificar el encabezado del archivo para la cantidad de bytes que deberían estar en el archivo, frente al número de bytes actualmente en el archivo para confirmar que coinciden?
¡Gracias por cualquier idea o pensamiento!
¿Tiene alguna control sobre el proceso de escritura de archivos en el directorio que eres ¿acecho? –
Además de renombrar el archivo cuando haya terminado, el enfoque que tomo es para que sea correcto leer el archivo tal como se está escribiendo (piense 'tail' en Unix) –