2

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

想请教各位大佬,BufferedWriter和OutputStreamWriter这两个比较好用

感谢任何有关正确方向的指导。

4

2 回答 2

10

好的,既然你问了。

Writer - 一个抽象类,具体实现让您可以编写字符/字符串。与 OutputStream 实现所做的原始字节相反。

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 次写入循环,计时,然后将其与 Buffered 版本进行比较。

于 2011-06-16T06:23:16.020 回答
0

Java 中没有 Stream writer

如果你想了解 Input 和 output Stream 最好的学习地方是下面的链接

于 2011-06-16T03:12:24.570 回答