我最喜欢的读取小文件的方法是使用 BufferedReader 和 StringBuilder。它非常简单明了(虽然不是特别有效,但对于大多数情况来说已经足够了):
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = br.readLine();
}
String everything = sb.toString();
} finally {
br.close();
}
有人指出,在 Java 7 之后你应该使用尝试资源 https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html(即自动关闭)特点:
try(BufferedReader br = new BufferedReader(new FileReader("file.txt"))) {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = br.readLine();
}
String everything = sb.toString();
}
当我读取这样的字符串时,我通常想对每行进行一些字符串处理,所以我就采用这个实现。
虽然如果我实际上只想将文件读入字符串,我总是使用 Apache公共IO http://commons.apache.org/proper/commons-io/使用类 IOUtils.toString() 方法。您可以在这里查看来源:
http://www.docjar.com/html/api/org/apache/commons/io/IOUtils.java.html http://www.docjar.com/html/api/org/apache/commons/io/IOUtils.java.html
FileInputStream inputStream = new FileInputStream("foo.txt");
try {
String everything = IOUtils.toString(inputStream);
} finally {
inputStream.close();
}
使用 Java 7 甚至更简单:
try(FileInputStream inputStream = new FileInputStream("foo.txt")) {
String everything = IOUtils.toString(inputStream);
// do something with everything string
}