2010-03-16 11 views
8

मैं जब मैं गोटो स्ट्रीम के लिए डेटा लिखने के लिए एक अपवाद फेंक करने के लिए निम्न कोड उम्मीद कर रहा था करने के लिए लिखने में सक्षम मेरा वर्तमान वातावरण, BufferedWriter बंद होने से पहले FileOutputStream को बंद करना संभव हो सकता है। फ़ाइलऑटपुटस्ट्रीम को आईओएक्सप्शन को फेंकना नहीं चाहिए, जब तक कि यह मेरी कोशिश/पकड़ ब्लॉक को हिट न करे और स्टैक ट्रेस प्रिंट न करे तब तक श्रृंखला को आगे बढ़ाना चाहिए?जावा BufferedWriter, OutputStreamWriter बंद FileOutputStream

अगर मैं fs.write (65) को कॉल करने का प्रयास करता हूं, तो यह अपवाद फेंकता है।

उत्तर

9

लिखने के बाद फ़्लशिंग करने का प्रयास करें। बफर किए गए स्ट्रीम ने अंतर्निहित धारा में सामग्री को लिखने की कोशिश नहीं की हो सकती है, और इसलिए यह नहीं पता चला कि अंतर्निहित धारा बंद थी।

संपादित करें:

बस कोशिश की। कोड के साथ:

java.io.IOException: Bad file descriptor 
    at java.io.FileOutputStream.writeBytes(Native Method) 
    at java.io.FileOutputStream.write(FileOutputStream.java:260) 
    at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202) 
    at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272) 
    at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:276) 
    at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:122) 
    at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:212) 
    at java.io.BufferedWriter.flush(BufferedWriter.java:236) 
    at Test.main(Test.java:16) 
+1

धन्यवाद:

File file = new File("test.txt"); FileOutputStream fs = new FileOutputStream(file); OutputStreamWriter ow = new OutputStreamWriter(fs); BufferedWriter writer = new BufferedWriter(ow); fs.close(); try { ow.write(65); writer.write("test"); writer.flush(); } catch (Exception e) { e.printStackTrace(); } 

आप निम्न अपवाद प्राप्त करें! विश्वास नहीं कर सकता मैंने कोशिश नहीं की, यूनिट टेस्ट मुझे इतना ध्यान केंद्रित करते हैं, मैं कभी-कभी स्पष्ट याद करता हूं। – craineum

+0

यह 'ow.write (65) 'पर अपवाद क्यों नहीं फेंक देगा, यद्यपि? आउटपुटस्ट्रीमवाइटर buffered नहीं है। –

+0

यदि आप OutputStreamWriter (परिचय) के लिए javadoc पढ़ते हैं तो आप देखते हैं कि यह भी buffered है। –

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