Возможно, это похоже на предыдущие посты, но я хочу быть более точным относительно использования блокировки в сети, а не локально. Я хочу записать файл в общую папку, чтобы он вполне мог работать в сети (конечно, в сети Windows, может быть, Mac). Я хочу запретить другим людям читать какую-либо часть этого файла, пока он записывается. Это не будет процесс с высокой степенью одновременности, а размер файлов обычно не превышает 10 МБ.
Я прочитал документацию FileLock
и документацию File
, и я несколько растерялся относительно того, что безопасно, а что нет. Я хочу заблокировать весь файл, а не его части.
Можно ли использовать FileChannel.tryLock()
, и это безопасно в сети, или это зависит от типа сети? Будет ли это работать в стандартной сети Windows (если есть такая вещь).
Если это не работает, лучше всего создать файл или каталог с нулевым байтом в качестве файла блокировки, а затем записать основной файл. Почему в документации File.createNewFile()
написано, что не используйте это для блокировки файлов? Я ценю, что это зависит от условий гонки и не является идеальным.