나는 디렉터리를 모니터링하고 백업하는 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();
}
그러나 나는 이전 파일을 삭제하고 새 것으로 교체해야 새 버전이있는 경우. 그러나 파일 잠금을 사용하여 파일을 삭제할 수 없습니다.
내가 잠금 해제하고 삭제해야할까요? 사용자가 파일에 쓸 수 없다는 것을 신뢰합니까? 아니면 이것을하는 다른 방법이 있습니까?
이 어쨌든 작동하지 않습니다. FileLocks는 사용자가 파일을 변경하거나 삭제하지 못하게합니다. 그들은 단지 다른 프로그램이 파일을 잠그는 것을 막을뿐입니다. – EJP