122

可能重复:
如何从文件的内容创建 Java 字符串
整个文本文件到 Java 中的字符串

我正在尝试使用 FileReader 读取文件的内容。但我想在不逐行读取的情况下读取文件。是否可以在没有循环的情况下读取整个文件。我正在使用以下代码

 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();
 }
4

5 回答 5

199

Java 7 一行解决方案

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

或者

 String text = new String(Files.readAllBytes(Paths.get("file")), StandardCharsets.UTF_8);
于 2013-01-05T07:36:06.710 回答
141

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

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");
于 2013-01-05T07:40:03.070 回答
36

如果您使用的是 JDK5 或更高版本,您可以尝试使用Scanner 。

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

或者你也可以使用番石榴

String data = Files.toString(new File("path.txt"), Charsets.UTF8);
于 2013-01-05T07:30:55.193 回答
34

如果您使用的是 Java 5/6,则可以使用Apache Commons IO将文件读取到字符串。该类org.apache.commons.io.FileUtils包含几种读取文件的方法。

例如使用方法FileUtils#readFileToString

File file = new File("abc.txt");
String content = FileUtils.readFileToString(file);
于 2013-01-05T07:38:32.567 回答
12

从 Java 11 开始,您可以更简单地做到这一点:

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)

于 2019-07-07T08:02:44.023 回答