Как предотвратить переопределение файла при чтении и обработке его с помощью Java?

StackOverflow https://stackoverflow.com/questions/1271948

Вопрос

Мне нужно было бы прочитать и обработать несколько большой файл с помощью 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, но вы не должны этого делать в своем производственном коде

Другие советы

Работает в основном нормально, есть некоторые проблемы : поскольку блокировка, похоже, не является полностью абсолютной.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top