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