import com.google.common.io.Files;
import org.apache.commons.io.Charsets;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
import java.io.*;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
/**
* @Description: 逐行读取文件性能对比
* @Author: Seven-Steven
* @Date: 19-1-25
**/
public class ReadByLineFromFileTest{
public static void main(String[] args){
ReadByLineFromFileTest test = new ReadByLineFromFileTest();
String filePath = "./testFile.txt";
File file = new File(filePath);
if (!file.exists()) {
// 随机写入 1000000 行内容
test.writeRandom(filePath, 1000000);
}
long before, after, time;
// 使用 BufferedReader 逐行读取文件
before = System.currentTimeMillis();
test.bufferedReader(filePath);
after = System.currentTimeMillis();
time = after - before;
System.out.println("BufferedReader 耗时: " + time + "ms");
// 使用 Scanner 逐行读取文件
before = System.currentTimeMillis();
test.scanner(filePath);
after = System.currentTimeMillis();
time = after - before;
System.out.println("Scanner 耗时: " + time + "ms");
// 使用 Apache Commons IO 流逐行读取文件
before = System.currentTimeMillis();
test.apacheCommonsIo(filePath);
after = System.currentTimeMillis();
time = after - before;
System.out.println("Apache Commons IO 耗时: " + time + "ms");
// 使用 InputStreamReader 逐字符读取文件
before = System.currentTimeMillis();
test.inputStreamReader(filePath);
after = System.currentTimeMillis();
time = after - before;
System.out.println("InputStreamReader 耗时: " + time + "ms");
// 使用 FileInputStream 逐字符读取文件
before = System.currentTimeMillis();
test.fileInputStream(filePath);
after = System.currentTimeMillis();
time = after - before;
System.out.println("FileInputStream 耗时: " + time + "ms");
// 使用 BufferedInputStream 逐字符读取文件
before = System.currentTimeMillis();
test.bufferedInputStream(filePath);
after = System.currentTimeMillis();
time = after - before;
System.out.println("BufferedInputStream 耗时: " + time + "ms");
// 使用 FileUtils 一次性读取文件所有行
<