Ceci est peut-être similaire aux messages précédents, mais je veux être précis sur l'utilisation du verrouillage sur un réseau, plutôt que localement. Je veux écrire un fichier à un emplacement partagé, donc il peut très bien aller sur un réseau (certainement un réseau Windows, peut-être Mac). Je veux empêcher d'autres personnes de lire n'importe quelle partie de ce fichier pendant son écriture. Ce ne sera pas un processus hautement concurrent, et les fichiers seront généralement moins de 10 Mo.Verrouillage de fichier Java sur un réseau
J'ai lu la documentation FileLock
et la documentation File
et je suis un peu confus quant à ce qui est sûr et ce qui ne l'est pas. Je veux verrouiller le fichier entier, plutôt que des parties de celui-ci. Puis-je utiliser FileChannel.tryLock()
, et est-ce que c'est sécurisé sur un réseau, ou cela dépend-il du type de réseau? Cela fonctionnera-t-il sur un réseau Windows standard (s'il y a une telle chose).
Si cela ne fonctionne pas, il est préférable de créer un fichier ou un répertoire de zéro octet comme fichier de verrouillage, puis d'écrire le fichier principal. Pourquoi cette documentation File.createNewFile()
ne l'utilise-t-elle pas pour le verrouillage de fichier? J'apprécie que cela soit sujet aux conditions de course, et n'est pas idéal.