FileOutputStream का उपयोग करके किसी फ़ाइल को लिखने के बाद उसे हटाने का प्रयास करते समय, कुछ उपयोगकर्ताओं को एक अप्रत्याशित समस्या का सामना करना पड़ता है file.delete() गलत रिटर्न देता है। फ़ाइल के मौजूदा होने और सभी अनुमति जांचों (.exists(), .canRead(), .canWrite(), .canExecute()) के सही होने के बावजूद ऐसा होता है।
आगे की जांच करने पर, ऐसा प्रतीत होता है कि एक सूक्ष्म बग है जावा में मौजूद है, जो सभी आवश्यक शर्तें पूरी होने पर भी सफल फ़ाइल विलोपन को रोक सकता है। इस समस्या को हल करने के लिए, फ़ाइल को हटाने से पहले System.gc() को कॉल करना महत्वपूर्ण है।
निम्नलिखित कोड स्निपेट इस समाधान को मूल राइटकंटेंट विधि में शामिल करता है:
private void writeContent(File file, String fileContent) {
FileOutputStream to;
try {
to = new FileOutputStream(file);
to.write(fileContent.getBytes());
to.flush();
to.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
to.close(); // Close the stream as before
System.gc(); // Call System.gc() to force garbage collection
} catch (IOException e) {
// TODO Handle IOException
}
}
}
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3