8 java performance file-io filewriter disk-io
我一直用a FileWriter来用Java写文件到文件.显然你也可以使用一个BufferedOutputStream.在仔细阅读了两个javadoc之后,我似乎无法分辨哪个是更快/更有效.
所以我问:这两种文件I/O方法之间是否存在性能差异(即使是最小的)?如果是这样,它们是什么?为什么?如果没有,为什么它们实际上是一样的?
是否存在一个优先于另一个的情况?提前致谢!
Ber*_*ium 10
如果你真的想比较a FileWriter和a BufferedOutputStream来写一个文本文件,后者应该更快,因为I/O操作更少.
FileWriter,每次调用write方法都将立即保持(它是无缓冲的).BufferedOutputStream,如果缓冲区已满,则数据将被写入磁盘(或者使用该flush方法刷新缓冲区).但是如果你写文本文件,你应该使用Writer; 在这种情况下,我们可以比较a FileWriter与BufferedWriter:
看着
FileWriter fw = new FileWriter(...)
Run Code Online (Sandbox Code Playgroud)
和
BufferedWriter bw = new BufferedWriter(new FileWriter(...)
Run Code Online (Sandbox Code Playgroud)
您对I/O操作的数量有相同的情况.
A 内部FileWriter使用FileOutputStream.使用a的原因FileWriter是,当您写入文件时,它会自动使用默认字符编码(例如,Java内部字符串被编码为UTF-8).如果使用a OutputStream,则必须在每次写入时手动编码:
所以这个例子是BufferedWriter:
bw.write("Hello");
Run Code Online (Sandbox Code Playgroud)
对应于以下示例BufferedOutputStream:
bos.write("Hello".getBytes(Charset.forName("utf-8")));
Run Code Online (Sandbox Code Playgroud)
如果您的默认编码是utf-8.
一个OutputStream与(原始)交易个字节,而一Writer有(文本)字符交易.
| 归档时间: |
|
| 查看次数: |
13909 次 |
| 最近记录: |