Sous Windows avec la JVM de Sun, les FileLocks devraient fonctionner correctement, bien que les JavaDocs laissent la fiabilité plutôt vague (dépendante du système). Néanmoins, si vous avez seulement besoin de reconnaître dans votre programme Java, qu'un autre autre programme verrouille le fichier, vous n'avez pas à vous battre avec FileLocks, mais vous pouvez simplement essayer d'écrire dans le fichier, ce qui échoue si elle est verrouillée. Tu ferais mieux de l'essayer sur votre système actuel, mais je vois le comportement suivant:
File f = new File("some-locked-file.txt");
System.out.println(f.canWrite()); // -> true
new FileOutputStream(f); // -> throws a FileNotFoundException
Ce qui est assez étrange, mais si vous ne comptez pas l'indépendance de la plate-forme trop élevée et que votre système montre le même comportement, vous pouvez mettre ceci ensemble dans une fonction d'utilité. Avec les versions Java actuelles, il n'y a malheureusement aucun moyen d'être informé des changements d'état du fichier, donc si vous devez attendre que le fichier puisse être écrit, vous devez essayer de temps en temps pour vérifier si l'autre processus a a sorti son verrou. Je ne suis pas sûr, mais avec Java 7, il pourrait être possible d'utiliser le nouveau WatchService pour être informé de ces changements.
Voir aussi: http://stackoverflow.com/questions/713550/concurrent-file-write-in -java-on-windows – erickson
Voir aussi: http://stackoverflow.com/questions/122282/can-the-java-file-method-canwrite-support-locking – erickson