Блокировка и удаление файлов

Я делаю программу на java, которая отслеживает и делает резервную копию каталога. Время от времени приходится заливать модифицированные файлы в репозиторий или скачивать, если есть новая его версия. Для этого я должен заблокировать файл, чтобы пользователь не мог изменить содержимое или удалить его. В настоящее время я использую этот код для блокировки файла:

        file = new RandomAccessFile("C:\\Temp\\report.txt", "rw");

        FileChannel fileChannel = file.getChannel();
        fileLock = fileChannel.tryLock();
        if (fileLock != null) {
            System.out.println("File is locked");

            try{

            //Do what i need    

            }catch (Exception e){//Catch exception if any
                System.err.println("Error: " + e.getMessage());
            }
        }
        else{
            System.out.println("Failed");
        }
    } catch (FileNotFoundException e) {
        System.out.println("Failed");
    }finally{
        if (fileLock != null){
            fileLock.release();
        }

Однако, если есть новая версия, я должен удалить старый файл и заменить его новым. Но блокировка файла не позволяет мне удалить файл.

Должен ли я разблокировать и удалить запись, полагая, что пользователь не будет писать в файл? Или есть другой способ сделать это?

5
задан Brian Tompsett - 汤莱恩 22 August 2015 в 20:07
поделиться