Tôi đang tạo một chương trình trong java để theo dõi và sao lưu một thư mục. Đôi khi tôi phải tải lên các tệp đã sửa đổi vào kho lưu trữ hoặc tải xuống nếu có phiên bản mới của nó. Để thực hiện việc này, tôi phải khóa tệp để người dùng không thể thay đổi nội dung hoặc xóa nó. Hiện nay tôi đang sử dụng mã này để khóa các tập tin:Khóa và xóa
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();
}
Tuy nhiên nếu có một phiên bản mới tôi phải xóa các tập tin cũ và thay thế bằng một hình mới. Nhưng Khóa tệp không cho phép tôi xóa tệp.
Tôi có nên mở khóa và xóa ghi đi, tin tưởng rằng người dùng sẽ không ghi vào tệp? Hay có cách nào khác để làm điều này?
này sẽ không hoạt anyway. FileLocks không ngăn người dùng thay đổi hoặc xóa tệp. Chúng chỉ ngăn các chương trình khác khóa tập tin đó. – EJP