我有两种方法在 java 中读取文本文件,一种使用 FileReader 和其他文件 InputStream
FileReader fr=new FileReader("C:\\testq\\test.txt");
BufferedReader br=new BufferedReader(fr);
String s;
while((s=br.readLine())!=null){
System.out.println("value are "+s);
}
其他是
FileInputStream fstream = new FileInputStream("C:\\testnew\\out.text");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null){
System.out.println (strLine);
}
虽然两者都给我输出......我只是想知道哪种是最好的方法。
最佳答案
我强烈建议使用 InputStreamReader
而不是 FileReader
,但要明确指定字符编码。这确实是使用 InputStreamReader
的最大好处(并且无法为 FileReader
指定编码是 API 中的一个主要漏洞,IMO)。
我还会使用 DataInputStream
删除“层”——只需将 FileInputStream
传递给 InputStreamReader
构造函数。
Java 8 之前
或者,考虑使用 Guava 中的一些便捷方法这可以使这类事情很多变得更简单。例如:
File file = new File("C:\\testnew\\out.text");
List<String> lines = Files.readLines(file, Charsets.UTF_8));
来自 Java 8
Java 8 在 java.nio.files
中引入了一堆新类和方法,其中许多默认(明智地)为 UTF-8:
Path path = Paths.get("C:\\testnew\\out.text");
List<String> lines = Files.readAllLines(path);
关于java - 在 FileReader 和 InputStreamReader 之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9938520/