我已经用下面这个成语有一段时间了。这似乎是传播最广的,至少在我访问过的网站上。
在Java中有没有更好/不同的方法将文件读入字符串?
private String readFile(String file) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader (file));
String line = null;
StringBuilder stringBuilder = new StringBuilder();
String ls = System.getProperty("line.separator");
try {
while((line = reader.readLine()) != null) {
stringBuilder.append(line);
stringBuilder.append(ls);
}
return stringBuilder.toString();
} finally {
reader.close();
}
}
对于Java 7,这是我读取UTF-8文件的首选选项:
String content = new String(Files.readAllBytes(Paths.get(filename)), "UTF-8");
自Java7以来,JDK有了新的Java.nio.file API,它提供了许多快捷方式,因此简单的文件操作并不总是需要第三方库。
由于人们仍然对这个答案投赞成票,这里有一个在Java 11中引入的更好的解决方案:
String content = Files.readString(path);
对于Java 7,这是我读取UTF-8文件的首选选项:
String content = new String(Files.readAllBytes(Paths.get(filename)), "UTF-8");
自Java7以来,JDK有了新的Java.nio.file API,它提供了许多快捷方式,因此简单的文件操作并不总是需要第三方库。
由于人们仍然对这个答案投赞成票,这里有一个在Java 11中引入的更好的解决方案:
String content = Files.readString(path);
如果您无权访问Files类,则可以使用本机解决方案。
static String readFile(File file, String charset)
throws IOException
{
FileInputStream fileInputStream = new FileInputStream(file);
byte[] buffer = new byte[fileInputStream.available()];
int length = fileInputStream.read(buffer);
fileInputStream.close();
return new String(buffer, 0, length, charset);
}