मैं एक आवेदन है कि एक निर्देशिका के भीतर फ़ाइलों की सामग्री पटरियों में एक आवर्ती समस्या का सामना कर रहा हूँ, जावा 7 WatchService API पर आधारित पहले अन्य प्रक्रिया द्वारा अवरोधित नहीं है। जब अंतर्निहित फ़ाइल सिस्टम फ़ाइल पर एक संशोधन घटना को सक्रिय करता है, तो मैं तुरंत अपने SHA-256 की गणना करना चाहता हूं।जावा मैं/हे: एक फ़ाइल सुनिश्चित करें किसी भी आर/डब्ल्यू आपरेशन
लेकिन यह अक्सर तब होता है किसी अन्य प्रक्रिया फ़ाइल को खोला (अर्थात Word) है, इस प्रकार एक विशेष ताला हिरासत में लिया गया है और किसी भी पढ़ें/लिखें आपरेशन से मेरे ऐप को रोकने। किसी भी स्ट्रीम/चैनल खोला फ़ाइल के खिलाफ बनाया गया है तो एक FileNotFoundException या NIO एपीआई के लिए एक FileSystemException की तरह एक संदेश के साथ फेंक दिया जाता है:
प्रक्रिया फ़ाइल तक नहीं पहुँच सकता है क्योंकि यह अन्य प्रक्रिया द्वारा किया जा रहा है
मैं ऐसे समाधान के साथ आने में सक्षम नहीं था जो "असली" FileNotFoundException को मास्क किए बिना ऐसे मामलों का पता लगाएगा जब फ़ाइल वास्तव में fs पर मौजूद नहीं है।
मैं फ़ाइल.एक्सिस्ट्स के माध्यम से अस्तित्व की जांच करने के विचार के साथ आया हूं और फिर यदि कोई स्ट्रीम खोलने पर फ़ाइल नॉटफाउंड अपवाद फेंक दिया जाता है तो मैं अनुमान लगा सकता हूं कि फ़ाइल लॉक है। मैं इस पर किसी भी इनपुट के लिए खुला हूँ!
धन्यवाद!
कभी भी इस का समाधान खोजने? –
मैं, अनुमानी उल्लेख का उपयोग कर यदि File.exists FileNotFoundException कैच ब्लॉक मैं बंद कर दिया एक फ़ाइल के रूप में व्याख्या के भीतर सच रिटर्न समाप्त हो गया। – sylvain