2012-02-06 13 views
11

लिए लेखन मैं FileWriter उपयोग कर रहा हूँ।जावा एक नष्ट कर दिया फ़ाइल

क्या यह सामान्य है?

+2

में देखने के लिए क्या ओएस इस पर है? उदाहरण के लिए, लिनक्स में 'आरएम' केवल फाइल को अपने पथ से अलग करता है, और केवल तभी जब फ़ाइल में सभी हैंडल चले जाते हैं तो यह वास्तव में हटा दिया जाएगा (यदि यह अभी भी खुला है तो इसे आसानी से पुनर्प्राप्त किया जा सकता है)। –

उत्तर

15

यह अपने ऑपरेटिंग सिस्टम पर निर्भर करता है:

  • Windows पर, आप आमतौर पर एक खुली फ़ाइल को नष्ट करने में सक्षम नहीं होगा।
  • यूनिक्स पर, एक खुली फ़ाइल को हटाने और इसे लिखने के लिए जारी रखने (या इससे पढ़ना) पूरी तरह से स्वीकार्य है। एक बार जब आप फ़ाइल को हटा देते हैं, तो उसके पास अब निर्देशिका प्रविष्टि नहीं होगी। हालांकि, फ़ाइल बंद होने तक इसकी सामग्री डिस्क पर मौजूद रहेगी। एक बार सभी खुले हैंडल जो फ़ाइल को संदर्भित करते हैं, बंद हो जाते हैं, ओएस स्वचालित रूप से डिस्क स्पेस को पुनः प्राप्त कर लेगा।
1

हाँ, यह सामान्य है। I/O करने के अधिकांश पारंपरिक तरीकों का उपयोग करते हुए, यदि फ़ाइल मौजूद नहीं है, तो यह आपके लिए बनाता है। बेशक यह लंबित है कि आपने इसे से पहले हटा दिया है, आपने इसे लिखना शुरू कर दिया है।

0

एक फ़ाइल एक से अधिक स्थानों (हार्ड लिंक के साथ) में दिखाई दे सकती है, फ़ाइल को हटाने से हार्ड लिंक में से एक को हटा दिया जाता है (संभवतः केवल) यदि कहीं और कोई लिंक है, तो फ़ाइल अभी भी पहुंच योग्य है।

फ़ाइलें जो नष्ट हो जाती हैं, लेकिन खुले डिस्क स्थान लेने के लिए जारी है और हो सकता है इतना बड़ा है, तो अपने अंतरिक्ष का इस्तेमाल किया और सभी फ़ाइलों को आप अपनी डिस्क पर पा सकते हैं के आकार अलग है।

Btw: आप/पढ़ सकते हैं एक खुला फ़ाइल की सामग्री लिखने (नष्ट या नहीं) यदि आप /proc/{pid}/fd/{fid}

संबंधित मुद्दे