मैं जावा में एक प्रोग्राम बना रहा हूं जो निर्देशिका को मॉनीटर और बैकअप लेता है। समय-समय पर मुझे संशोधित फ़ाइलों को रिपोजिटरी में अपलोड करना होगा या डाउनलोड करना होगा यदि इसका कोई नया संस्करण है। ऐसा करने के लिए मुझे फ़ाइल को लॉक करना होगा ताकि उपयोगकर्ता सामग्री को बदलने या इसे हटाने में असमर्थ हो। वर्तमान में मैं फ़ाइल लॉक करने के लिए इस कोड का उपयोग कर रहा हूँ:फ़ाइल लॉकिंग और हटाएं
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