从性能优化的角度来看:用Java读取文件 - 更好的是缓冲读取器或扫描器吗?
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;
public class BufferedReaderExample {
public static void main(String args[]) {
//reading file line by line in Java using BufferedReader
FileInputStream fis = null;
BufferedReader reader = null;
try {
fis = new FileInputStream("C:/sample.txt");
reader = new BufferedReader(new InputStreamReader(fis));
System.out.println("Reading File line by line using BufferedReader");
String line = reader.readLine();
while(line != null){
System.out.println(line);
line = reader.readLine();
}
} catch (FileNotFoundException ex) {
Logger.getLogger(BufferedReaderExample.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(BufferedReaderExample.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
reader.close();
fis.close();
} catch (IOException ex) {
Logger.getLogger(BufferedReaderExample.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Output:
Reading File line by line using BufferedReader
first line in file
second line
third line
fourth line
fifth line
last line in file
和扫描仪的另一种方法是..
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
/**
* @author Javin Paul
* Java program to read file line by line using Scanner. Scanner is a rather new
* utility class in Java and introduced in JDK 1.5 and preferred way to read input
* from console.
*/
public class ScannerExample {
public static void main(String args[]) throws FileNotFoundException {
//Scanner Example - read file line by line in Java using Scanner
FileInputStream fis = new FileInputStream("C:/sample.txt");
Scanner scanner = new Scanner(fis);
//reading file line by line using Scanner in Java
System.out.println("Reading file line by line in Java using Scanner");
while(scanner.hasNextLine()){
System.out.println(scanner.nextLine());
}
scanner.close();
}
}
Output:
Reading file line by line in Java using Scanner
first line in file
second line
third line
fourth line
fifth line
last line in file
答案 0 :(得分:5)
BufferedReader
比Scanner
要快得多,因为它buffers the character
所以每次要从中读取字符时都不必访问该文件。
扫描仪特别有用,例如直接读取原始数据类型,也用于正则表达式。
我已经使用了Scanner和BufferedReader,BufferedReader提供了显着的快速性能。你也可以自己测试一下。