2015-12-15 15 views
5

BufferedReader कक्षा में readLine() विधि क्यों है, लेकिन BufferedWriter कक्षा में writeLine(String) विधि नहीं है? अब हमें write(str + "\n") या write(str) और newLine() करना है।BufferedWriter class writeLine method

उत्तर

7

javadocs के माध्यम से पढ़ना मुझे कोई विशिष्ट कारण नहीं दिख रहा है कि writeLine() विधि प्रदान नहीं की गई है। प्रदत्त write विधियों के साथ BufferedWriter दक्षता उद्देश्यों के लिए लिखने से पहले वर्णों को बफर करेगा। एक नया writeLine() विधि प्रदान करने से कोई वैल्यू नहीं जोड़ा जाएगा क्योंकि इस काल्पनिक writeLine विधि में प्रदान की गई वर्ण स्ट्रीम को बफर किया जाएगा और बफर भरने पर ही लिखा जाएगा।

आप स्विच BufferedWriter के बजाय PrintWriter वर्ग के लिए के रूप में यह println(String str) विधि है जो लिखने एक स्ट्रिंग और एक नई पंक्ति चरित्र इस्तेमाल किया जा सकता प्रदान करता है सकते हैं। लेकिन BufferedWriter की तुलना में यह अक्षम है और यह केवल तब उपयोग करना बेहतर होता है जब आप अपनी आउटपुट फ़ाइल को println() विधि को कॉल करने पर तत्काल लिखे गए तारों को रखना चाहते हैं।

कारण here सबसे अच्छा तरीका में उल्लेख के लिए BufferedWriter वर्ग के साथ write() और newLine() तरीकों का उपयोग करने के लिए है।

BufferedWriter के लाभों का लाभ उठाने के लिए और println() विधि का उपयोग करने की, के रूप में javadocs में सुझाव दिया कि आप नीचे कर सकते हैं:

PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out"))); 
out.println("Hello World!"); 
+1

इस सवाल का जवाब नहीं है। – YoungHobbit

+0

मुझे पता है कि मुझे ऐसा करना है, लेकिन मैं बस सोच रहा था कि एक कॉल में ऐसा करने के लिए कोई सुविधा विधि क्यों नहीं है। अन्य भाषाओं को मैं जानता हूं जैसे सी # में ऐसा है। –

+0

@ 0ne_Up - मैंने देखा और सी # https://msdn.microsoft.com/en-us/library/system.io.bufferedstream_methods(v=vs.90) के बुफर्डस्ट्रीम कक्षा में समतुल्य लेखन() समकक्ष नहीं मिला। aspx। क्या आप मुझे बता सकते हैं कि आप किस वर्ग का जिक्र कर रहे हैं? उदाहरण के लिए – vk239

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