Como evitar arquivo seja substituído ao ler e processá-lo com Java?
-
13-09-2019 - |
Pergunta
Eu preciso ler e processar um pouco grande arquivo com Java e eu gostaria de saber, se há alguma maneira sensata para proteger o arquivo que ele não seria substituído por outros processos, enquanto eu estou lendo & processá-lo?
Isto é, de alguma forma para torná-lo somente leitura, mantê-lo "aberto" ou algo assim ...
Isso seria feito em ambiente Windows.
br, Touko
Solução
você quer um FileLock :
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();
para simplificar omiti uma enclosng try / finally bloco, mas você não deve em seu código de produção
Outras dicas
Trabalhando principalmente excelentes, tem alguns problemas: como o bloqueio não parece ser totalmente absoluta .
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow