2015-12-15 10 views
5

Warum hat die BufferedReader Klasse eine readLine() Methode, aber die BufferedWriter Klasse hat keine writeLine(String) Methode? Jetzt müssen wir write(str + "\n") oder write(str) und newLine() tun.BufferedWriter Klasse writeLine Methode

Antwort

7

Lesen durch Javadocs Ich sehe keinen bestimmten Grund, warum eine writeLine() Methode nicht zur Verfügung gestellt wird. Mit den bereitgestellten write Methoden puffert BufferedWriter die Zeichen vor dem Schreiben aus Effizienzgründen. Das Bereitstellen einer neuen writeLine()-Methode fügt keinen Wert hinzu, da der Zeichenstrom, der in dieser imaginären writeLine-Methode bereitgestellt wird, gepuffert und nur geschrieben wird, wenn der Puffer voll ist.

Sie können zu PrintWriter Klasse anstelle von BufferedWriter wechseln, da es println(String str) Methode bietet, die verwendet werden kann, schreiben Sie eine Zeichenfolge und ein Newline-Zeichen. Dies ist jedoch im Vergleich zu BufferedWriter ineffizient, und es ist besser, dies nur dann zu verwenden, wenn die Ausgabedatei beim Schreiben der println() -Methode sofort die Strings schreiben soll.

Mit BufferedWriter Klasse aus dem Grund in here genannt besten Ansatz ist write() und newLine() Methoden zu verwenden.

Um die Vorteile von BufferedWriter zu nutzen und den Zugang zu println() Methode haben, können Sie die unten in javadocs wie vorgeschlagen tun:

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

sich die Frage nicht beantworten. – YoungHobbit

+0

Ich weiß, dass ich das tun muss, aber ich habe mich nur gewundert, warum es keine bequeme Methode gibt, es in einem Anruf zu tun. Andere Sprachen, die ich kenne, wie C#, haben das. –

+0

@ 0ne_Up - Ich habe nachgeschlagen und konnte kein WriteLine() Äquivalent in der BufferedStream-Klasse von C# finden https://msdn.microsoft.com/en-us/library/system.io.bufferedstream_methods(v=vs.90). aspx. Kannst du mich wissen lassen, auf welche Klasse du dich beziehst? – vk239

Verwandte Themen