Java:StreamWriter和BufferedWriter有什么区别?

时间:2011-06-16 02:39:47

标签: java parsing writer

我正在解析800MB大小的文件(超过2GB的可能性很高)。 我把它分成几个文件,每个文件大约1-3kb。

我想咨询你们,最好在两者之间使用:BufferedWriter和OutputStreamWriter

对正确方向的任何指导表示赞赏。

2 个答案:

答案 0 :(得分:9)

好的,既然你问。

Writer - 一个抽象类,具体实现让你写字符/字符串。与RawStream实现的原始字节相反。

FileWriter - 一个允许您写入文件的具体实现。弱点:字符的编码被硬编码为默认语言环境,例如Windows上的Windows-1252和Linux上的UTF-8。

为了解决这个问题,许多人从OutputStream(可能是FileOutputStream)开始,然后使用OutputStreamWriter将其转换为Writer,因为构造函数允许您设置编码。

示例:

OutputStream os = new FileOutputStream("turnip");
Writer writer = new OutputStreamWriter(os,"UTF-8");
writer.write("This string will be written as UTF-8");

现在,使用OutputStreams / Writers(及其反向类InputStream / Readers),除了围绕它们包装BufferedWriter之外,它通常很有用。

继续示例

writer=new BufferedWriter(writer);
writer.write("Another string in UTF-8");

这是做什么的? BufferedWriter基本上提供了一个内存缓冲区。您编写的所有内容都首先存储在内存中,然后根据需要刷新到磁盘(或者更换)。这通常会带来显着的性能提升。为了证明这一点,只需创建一个没有BufferedWriter的100,000次写入循环,将其计时,并将其与缓冲版本进行比较。

答案 1 :(得分:0)

Java中没有Stream编写器

如果您想了解输入和输出流 最好的学习地点是以下link