En Windows con la JVM de Sun, FileLocks debería funcionar correctamente, aunque los JavaDocs dejan la confiabilidad bastante vaga (depende del sistema).
Sin embargo, si sólo se tiene que reconocer en el programa Java, que algún otro programa está bloqueando el archivo, usted no tiene que luchar con FileLocks, sino que simplemente puede tratar de escribir en el fichero, que se fallar si está bloqueado Es mejor intentar esto en su sistema actual, pero veo el siguiente comportamiento:
File f = new File("some-locked-file.txt");
System.out.println(f.canWrite()); // -> true
new FileOutputStream(f); // -> throws a FileNotFoundException
Esto es bastante extraño, pero si no se cuenta independencia de la plataforma demasiado alta y el sistema muestra el mismo comportamiento, se puede poner esto juntos en una función de utilidad.
Con las versiones actuales de Java, lamentablemente no hay forma de estar informado sobre los cambios de estado del archivo, por lo que si necesita esperar hasta que se pueda escribir el archivo, debe intentar de vez en cuando comprobar si el otro proceso liberó su cerradura. No estoy seguro, pero con Java 7, podría ser posible usar el nuevo WatchService para estar informado sobre dichos cambios.
Ver también: http://stackoverflow.com/questions/713550/concurrent-file-write-in -java-on-windows – erickson
Vea también: http://stackoverflow.com/questions/122282/can-the-java-file-method-canwrite-support-locking – erickson