हमारा जावा प्रोग्राम लगातार एक फ़ाइल में कुछ महत्वपूर्ण डेटा लिखता है। अब जब भी फ़ाइल (जिस पर जावा प्रोग्राम लिख रहा है) कुछ मैन्युअल रूप से हटाए जाते हैं, तो हम कुछ अपवाद फेंकना चाहते हैं या कंसोल पर किसी प्रकार का त्रुटि संदेश प्रदर्शित करना चाहते हैं।जावा - फ़ाइल में लिखते समय फ़ाइल हटाने का पता कैसे लगाएं?
मैंने पाया कि जावा किसी भी अपवाद को फेंक नहीं देता है जब यह हटाए गए फ़ाइल को लिखने का प्रयास करता है।
विधि I - एक नया धागा शुरू करें जो जांच करेगा कि फ़ाइल वहां है या फ़ाइल हटा दिए जाने पर इसके बारे में मुख्य जावा प्रोग्राम को सूचित करें। यह हमारे मामले में काम नहीं करेगा क्योंकि हमारे पास कई फाइलें होंगी जिनमें जावा प्रोग्राम लिख रहा होगा ताकि प्रत्येक फ़ाइल के लिए एक नया धागा शुरू करने से स्मृति कुशल न हो।
विधि II - फ़ाइल में लिखने से पहले फ़ाइल के अस्तित्व की जांच करें। यह भी एक अच्छा दृष्टिकोण नहीं है क्योंकि फ़ाइल अस्तित्व की जांच करना एक महंगा ऑपरेशन है।
विधि तृतीय - बढ़ाएँ java.io.FilterWriter और लिखने() विधि अपवाद फेंक ओवरराइड (जिसे हम एक फ़ाइल पर लिखने में उपयोग कर रहे हैं) जब भी यह है कि कर दिया गया है एक फ़ाइल पर लिखने की कोशिश करता है नष्ट कर दिया। यह एक अच्छा समाधान प्रतीत होता है लेकिन मुझे कोई ऐसा स्थान नहीं मिला जहां जावा कुछ अपवाद पच रहा है (जब यह हटाए गए फाइल को लिखने का प्रयास करता है) जिसे हम उस विधि को ओवरराइड करके फेंक सकते हैं।
क्या यह विंडोज या यूनिक्स है? क्या आप प्रत्येक लिखने के बाद फ़ाइल बंद कर रहे हैं, या पूरे समय आप इसे खोलने के बाद इसे खोल रहे हैं? – Gabe
@Gabe यह यूनिक्स है। विंडोज़ में यदि आप कुछ प्रक्रियाओं द्वारा उपयोग किया जा रहा है तो आप फ़ाइल को हटा नहीं सकते हैं। –
यूनिक्स में यह जानने का कोई तरीका नहीं है कि आपके द्वारा खोला गया फ़ाइल हटा दिया गया है, इसलिए जब ऐसा होता है तो जावा (या कोई अन्य भाषा) अपवाद फेंकने का कोई तरीका नहीं है। – Gabe