जबकि java.io.RandomAccessFileएक close()विधि java.io.Fileनहीं है। ऐसा क्यों है? क्या फ़ाइल को अंतिम रूप से बंद कर दिया गया है या कुछ और?
धन्यवाद!
जबकि java.io.RandomAccessFileएक close()विधि java.io.Fileनहीं है। ऐसा क्यों है? क्या फ़ाइल को अंतिम रूप से बंद कर दिया गया है या कुछ और?
धन्यवाद!
जवाबों:
Fileवर्ग के javadoc के रूप में वर्ग का वर्णन है:
फ़ाइल और निर्देशिका पथनामों का एक सार प्रतिनिधित्व।
Fileकेवल एक pathname का प्रतिनिधित्व है, फाइलसिस्टम (जैसे exists()) और निर्देशिका हैंडलिंग से संबंधित कुछ तरीकों के साथ, लेकिन वास्तविक स्ट्रीमिंग इनपुट और आउटपुट कहीं और किया जाता है। धाराओं को खोला और बंद किया जा सकता है, फाइलें नहीं हो सकतीं।
(मेरी निजी राय है कि यह दुर्भाग्यपूर्ण है कि सूर्य तब बना RandomAccessFile, जिसके असंगत नामकरण से बहुत भ्रम पैदा हुआ।)
java.io.Fileएक खुली फ़ाइल का प्रतिनिधित्व नहीं करता है , यह फाइल सिस्टम में एक पथ का प्रतिनिधित्व करता है। इसलिए इस पर closeविधि का कोई मतलब नहीं है।
वास्तव में, यह वर्ग पुस्तकालय के लेखकों द्वारा गलत किया गया था, इसे कुछ ऐसा कहा जाना चाहिए Path।
Pathपूरी तरह से अलग कर दिया जाना चाहिए था ।
रैंडम एक्सेस को प्रबंधित करने के लिए अनिवार्य रूप से रैंडम एक्सेस फाइल इनपुट और आउटपुट स्ट्रीम को लपेटता है। आप कोई फ़ाइल नहीं खोलते और बंद करते हैं, आप किसी फ़ाइल में स्ट्रीम खोलते और बंद करते हैं।
मान लीजिए, आपके पास है
File f = new File("SomeFile");
f.length();
आपको Fileएस को बंद करने की आवश्यकता नहीं है , क्योंकि इसका सिर्फ एक मार्ग का प्रतिनिधित्व है।
आपको हमेशा केवल पाठक / लेखकों और वास्तव में धाराओं को बंद करने पर विचार करना चाहिए।