ero*_*ros 2 java parsing writer
我正在解析800MB大小的文件(超过2GB的可能性很高).我把它分成几个文件,每个文件大约1-3kb.
我想咨询你们,最好在两者之间使用:BufferedWriter和OutputStreamWriter
任何关于正确方向的指导都表示赞赏.
好的,既然你问.
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");
Run Code Online (Sandbox Code Playgroud)
现在,使用OutputStreams/Writers(及其反向类InputStream/Readers),除了围绕它们包装BufferedWriter之外,它通常也很有用.
继续举例
writer=new BufferedWriter(writer);
writer.write("Another string in UTF-8");
Run Code Online (Sandbox Code Playgroud)
这是做什么的?BufferedWriter基本上提供了一个内存缓冲区.您编写的所有内容都首先存储在内存中,然后根据需要刷新到磁盘(或者).这通常会带来显着的性能提升.为了证明这一点,只需创建一个没有BufferedWriter的100,000次写入循环,计时,然后将其与Buffered版本进行比较.