文件写入的6种方法,这种方法性能最好(6)

简介: 文件写入的6种方法,这种方法性能最好(6)

在查看结果之前,我们先去对应的文件夹看看写入的文件是否正常,如下图所示:


微信图片_20220120151840.jpg


从上述结果可以看出,每种方法都正常写入了 26 MB 的数据,它们最终执行的结果如下图所示:


微信图片_20220120151846.jpg


从以上结果可以看出,字符流的操作速度最快,这是因为我们本次测试的代码操作的是字符串,所以在使用字节流时,需要先将字符串转换为字节流,因此在执行效率上不占优势。


从上述结果可以看出,性能最好的是带有缓冲区的字符串写入流 BufferedWriter,性能最慢的是 Files


PS:以上的测试结果只是针对字符串的操作场景有效,如果操作的是二进制的文件,那么就应该使用带缓冲区的字节流 BufferedOutputStream。


6.扩展知识:内容追加


以上代码会对文件进行重写,如果只想在原有的基础上追加内容,就需要在创建写入流的时候多设置一个 append 的参数为 true,比如如果我们使用 FileWriter 来实现文件的追加的话,实现代码是这样的:


public static void fileWriterMethod(String filepath, String content) throws IOException {
    // 第二个 append 的参数传递一个 true = 追加文件的意思
    try (FileWriter fileWriter = new FileWriter(filepath, true)) {
        fileWriter.append(content);
    }
}


如果使用的是 BufferedWriterPrintWriter,也是需要在构建 new FileWriter 类时多设置一个 append 的参数为 true,实现代码如下:


try (BufferedWriter bufferedWriter = new BufferedWriter(
    new FileWriter(filepath, true))) {
    bufferedWriter.write(content);
}


相比来说 Files 类要想实现文件的追加写法更加特殊一些,它需要在调用 write 方法时多传一个 StandardOpenOption.APPEND 的参数,它的实现代码如下:



Files.write(Paths.get(filepath), content.getBytes(), StandardOpenOption.APPEND);


7.总结


本文我们展示了 6 种写入文件的方法,这 6 种方法总共分为 3 类:字符流写入、字节流写入和 Files 类写入。其中操作最便利的是 Files 类,但它的性能不怎么好。如果对性能有要求就推荐使用带有缓存区的流来完成操作,如 BufferedWriterBufferedOutputStream。如果写入的内容是字符串的话,那么推荐使用 BufferedWriter,如果写入的内容是二进制文件的话就推荐使用 BufferedOutputStream


参考 & 鸣谢


https://www.cnblogs.com/absfree/p/5415092.html

相关文章
|
6月前
|
存储 文件存储
<文件操作> 文件的打开与关闭,顺序读写,随机读写,二进制文件,读取结束的判定,文件缓冲区
<文件操作> 文件的打开与关闭,顺序读写,随机读写,二进制文件,读取结束的判定,文件缓冲区
40 1
|
存储 缓存 C语言
【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识(下)
【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识(下)
|
6月前
|
存储 JSON 测试技术
高效文件读取策略:Buffer的妙用
高效文件读取策略:Buffer的妙用
106 0
|
11月前
|
XML C# 数据格式
C#读取写入文件的三种方式
最近对文件的操作比较频繁。这里记录一下常用的几种文件读写的方式。 我这里使用窗体来做测试,例子在文末,可下载。
87 0
|
存储 C语言
【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识(中)
【C语言进阶】文件的顺序读写、随机读写、文本文件和二进制文件、文件读取结束的判定以及文件缓冲区相关知识(中)
读取文件结束的判定的概念,使用方法和文件缓冲区的位置
读取文件结束的判定的概念,使用方法和文件缓冲区的位置
133 0
读取文件的多种方式
读取文件的多种方式和
110 0
|
Java 数据处理
文件写入的6种方法,这种方法性能最好(2)
文件写入的6种方法,这种方法性能最好(2)
109 0
文件写入的6种方法,这种方法性能最好(2)
|
存储 缓存 Java
文件写入的6种方法,这种方法性能最好(3)
文件写入的6种方法,这种方法性能最好(3)
234 0
文件写入的6种方法,这种方法性能最好(3)
|
Java
文件写入的6种方法,这种方法性能最好(1)
文件写入的6种方法,这种方法性能最好(1)
158 0
文件写入的6种方法,这种方法性能最好(1)