जब System.out.print
द्वारा उपयोग किया गया बफर भर जाता है, तो आउटपुट फ़ाइल (या टर्मिनल या अन्य डेटा लक्ष्य जो प्रोग्राम के मानक आउटपुट स्ट्रीम से जुड़ा होता है) में लिखा जाता है, जिसके परिणामस्वरूप एक खाली बफर होता है। बफर आकार के बारे में देखभाल किए बिना आउटपुट लिखना सामान्य उपयोग है। आप flush
पर कॉल न करने से अपने प्रोग्राम को कभी भी क्रैश या ब्लॉक नहीं करेंगे या डेटा खो देंगे।
आपको केवल flush
पर कॉल करने की आवश्यकता है यदि आपको तुरंत अपने प्रोग्राम के बाहर डेटा उपलब्ध कराने की आवश्यकता है। उदाहरण के लिए, यदि आपका प्रोग्राम किसी अन्य प्रोग्राम के साथ डेटा का आदान-प्रदान कर रहा है, और आप उस प्रोग्राम के लिए अनुरोध भेज रहे हैं और उस प्रोग्राम के उत्तर की प्रतीक्षा करेंगे, तो आपको यह सुनिश्चित करने के लिए flush
पर कॉल करने की आवश्यकता है ताकि अन्य कार्यक्रम प्राप्त हो सके यह। इसी प्रकार, यदि आपका प्रोग्राम (या जिस मशीन पर यह चलता है) क्रैश हो जाता है, तो केवल flush
कहलाता है, केवल आउटपुट ही लिखा गया है।
यदि स्ट्रीम स्वचालित रूप से फ्लश करने के लिए सेट है, तो एक न्यूलाइन वर्ण (स्पष्ट रूप से या println
के माध्यम से) लिखना flush
पर कॉल करने जितना अच्छा है। कॉलिंग close
भी flush
पर कॉल करता है (यही कारण है कि close
IOException
फेंक सकता है: इसे डेटा लिखना पड़ सकता है और ऐसा करने में सक्षम नहीं होना चाहिए, उदाहरण के लिए क्योंकि स्ट्रीम पूरी डिस्क पर फ़ाइल से जुड़ा हुआ है)।
ध्यान दें कि बफर को फ़्लश करने से प्रोग्राम को अवरुद्ध कर दिया जा सकता है, अगर System.out
स्ट्रीम को तुरंत प्राप्त करने के लिए तैयार नहीं है (उदाहरण के लिए जब डेटा किसी दूसरे प्रोग्राम पर पाइप किया जाता है जो तुरंत इनपुट नहीं पढ़ता है)। चूंकि बफर को किसी भी समय फ़्लश किया जा सकता है (क्योंकि बफर भरा हुआ होता है), print
पर किसी भी कॉल को गैर-खाली तर्क के साथ संभावित रूप से अवरुद्ध कर दिया जाता है।
अधिक जानकारी के लिए, buffered streams tutorial और java.io.PrintStream
class के दस्तावेज़ देखें।
'System.out' को प्रतिस्थापित करने के लिए 'System.outOut()' का उपयोग करें जो एक कस्टम स्ट्रीम के साथ – paislee
अपवाद फेंक देता है, वे दोनों गलत हैं। '\ n' के पास इसके साथ कुछ लेना देना नहीं है, '.close()' या' .flush() 'को कॉल करने के लिए सब कुछ लिखित या खो जाने वाली स्ट्रीम की सामग्री के साथ करना है। –