为什么BufferedReader
类有readLine()
方法,但BufferedWriter
类没有writeLine(String)
方法?现在我们必须write(str + "\n")
或write(str)
和newLine()
。
答案 0 :(得分:9)
通过javadocs阅读我没有看到为什么没有提供writeLine()
方法的任何具体原因。使用提供的write
方法,BufferedWriter将在写入之前缓冲字符以提高效率。提供新的writeLine()
方法不会添加任何值,因为此虚构的writeLine
方法中提供的字符流将仅在缓冲区已满时进行缓冲和写入。
您可以切换到PrintWriter类而不是BufferedWriter,因为它提供了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 :(得分:0)
来自https://docs.oracle.com/javase/7/docs/api/java/io/BufferedWriter.html
提供了一个newLine()方法,该方法使用平台自己的由系统属性line.separator定义的行分隔符概念。并非所有平台都使用换行符('\ n')来终止行。因此,调用此方法终止每条输出行比直接编写换行符更重要。