Estoy viendo un directorio para archivos entrantes (usando FileAlterationObserver desde Apache commons).Evite detectar archivos incompletos al mirar un directorio para ver cambios en Java
class Example implements FileAlterationListener {
public void prepare() {
File directory = new File("/tmp/incoming");
FileAlterationObserver observer = new FileAlterationObserver(directory);
observer.addListener(this);
FileAlterationMonitor monitor = new FileAlterationMonitor(10);
monitor.addObserver(observer);
monitor.start();
// ...
}
public void handleFile(File f) {
// FIXME: this should be called when the writes that
// created the file have completed, not before
}
public void onFileCreate(File f) {
handleFile(f);
}
public void onFileChange(File f) {
handleFile(f);
}
}
Los archivos están escritos en el lugar por procesos que no tengo control.
El problema que tengo con ese código es que mi devolución de llamada se desencadena cuando se crea el archivo inicialmente. Necesito que se active cuando se haya cambiado el archivo y se haya completado la escritura en el archivo. (tal vez al detectar cuando el archivo detuvo cambiando)
¿Cuál es la mejor manera de hacerlo?
IOW ¿Desea saber cuándo el proceso de escritura cierra el archivo? – finnw
Creo que básicamente necesito una implementación de [rebote] (http://documentcloud.github.com/underscore/docs/underscore.html#section-52) para Java – levinalex
volver a cerrar el archivo: Sí, si eso funciona que resolvería eso. (¿Hay alguna manera de obtener esa información sin ningún control sobre el escritor?) ¿Podría tratar de obtener un bloqueo exclusivo en el archivo? ¿Eso funciona en todas las plataformas? – levinalex