Как предотвратить переопределение файла при чтении и обработке его с помощью Java?
-
13-09-2019 - |
Вопрос
Мне нужно было бы прочитать и обработать несколько большой файл с помощью Java, и я хотел бы знать, есть ли какой-нибудь разумный способ защитить файл, чтобы он не был перезаписан другими процессами, пока я его читаю и обрабатываю?
То есть, какой-то способ сделать его доступным только для чтения, оставить его "открытым" или что-то в этом роде...
Это было бы сделано в среде Windows.
br, Тоуко
Решение
ты хочешь Блокировка файлов:
FileChannel channel = new RandomAccessFile("C:\\foo", "rw").getChannel();
// Try acquiring the lock without blocking. This method returns
// null or throws an exception if the file is already locked.
FileLock lock = channel.tryLock();
// ...
// release it
lock.release();
для простоты я опустил блок enclosng try / finally, но вы не должны этого делать в своем производственном коде
Другие советы
Работает в основном нормально, есть некоторые проблемы : поскольку блокировка, похоже, не является полностью абсолютной.
Не связан с StackOverflow