java 高性能读写文件_Java写入文件的性能详细分析

前言

众所周知,Java中有多种针对文件的操作类,以面向字节流和字符流可分为两大类,这里以写入为例:

面向字节流的:FileOutputStream 和 BufferedOutputStream

面向字符流的:FileWriter 和 BufferedWriter

近年来发展出New I/O ,也叫NIO,里面又包装了两个类:NewOutputStream 和 NewBufferedWriter

现在,我们建立测试程序,比较这些类写入文件的性能。

机器配置

Processor Name: Intel Core i7

Processor Speed: 2.2 GHz

Number of Processors: 1

Total Number of Cores: 4

L2 Cache (per Core): 256 KB

L3 Cache: 6 MB

Memory: 16 GB

测试程序

纵向比较:几种文件操作类向文件中写入相同行数的内容(每行内容均为“写入文件Datan”),比较其耗费时间

横向比较:对于同一个文件操作类,比较写入不同行数内容情况下所耗费时间;本文以2的次方指数级增长行数

1 importjava.io.File;2 importjava.io.FileOutputStream;3 import java.io.*;4 importjava.nio.file.Files;5 importjava.nio.file.Paths;6

7 public classtestFileIO {8

9 public static void testDriver () throwsIOException {10 int maxlineNum = 100000001;//写入文件的最大行数

11 int startlineNum = 1;//写入文件的行数

12 int Multiplying = 2;//行数增长倍率

13

14 long begin = 0L;15 long end = 0L;16

17 //将时间统计写入文件Result.txt中

18 FileWriter fileWriter = new FileWriter("./Result.txt", true);19 BufferedWriter bufferedWriter = newBufferedWriter(fileWriter);20

21 System.out.println("Test FileOutputStream begin.");22 for (int lineNum = startlineNum; lineNum < maxlineNum; lineNum *=Multiplying) {23 begin =System.currentTimeMillis();24 testFileOutputStrea

你可能感兴趣的:(java,高性能读写文件)