在 java 中不使用循环读取完整的文件

可能的复制品:
如何从文件内容创建 Java 字符串
将整个文本文件转换为 Java 中的 String

我正在尝试使用 FileReader 读取文件的内容。但是我不想一行一行地读取文件。是否可以不用循环读取整个文件。 I am using the following code

 try
{
File ff=new File("abc.txt");
FileReader fr=new FileReader(ff);


String s;
while(br.read()!=-1)
{
s=br.readLine();
}
}


catch(Exception ex)
{
ex.printStackTrace();
}
210373 次浏览

如果使用 JDK5或更高版本,可以尝试使用 扫描仪

Scanner scan = new Scanner(file);
scan.useDelimiter("\\Z");
String content = scan.next();

或者也可以使用 番石榴

String data = Files.toString(new File("path.txt"), Charsets.UTF8);

Java 7 one line solution

List<String> lines = Files.readAllLines(Paths.get("file"), StandardCharsets.UTF_8);

或者

 String text = new String(Files.readAllBytes(Paths.get("file")), StandardCharsets.UTF_8);

如果使用 Java5/6,则可以使用 Apache Commons IO将文件读取为字符串。类 强 > org.apache.commons.io.FileUtils包含几个用于读取文件的方法。

例如,使用方法 FileUtils#readFileToString:

File file = new File("abc.txt");
String content = FileUtils.readFileToString(file);

如果文件是 很小,你可以读取整个数据一次:

File file = new File("a.txt");
FileInputStream fis = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
fis.read(data);
fis.close();


String str = new String(data, "UTF-8");

从 Java11开始,你可以做得更简单:

import java.nio.file.Files;


Files.readString(Path path);
Files.readString​(Path path, Charset cs)

资料来源: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/file/Files.html#readString(java.nio.file.Path)