可能重复:
How to create a Java String from the contents of a file
Whole text file to a String in 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();
}
答案 0 :(得分:162)
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);
答案 1 :(得分:116)
如果文件小,您可以读取整个数据一次:
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");
答案 2 :(得分:30)
如果您使用的是Java 5/6,则可以使用Apache Commons IO将读取文件转换为字符串。类org.apache.commons.io.FileUtils
包含几种读取文件的方法。
e.g。使用方法FileUtils#readFileToString
:
File file = new File("abc.txt");
String content = FileUtils.readFileToString(file);
答案 3 :(得分:28)
如果您使用的是JDK5或更高版本,可以尝试使用Scanner。
Scanner scan = new Scanner(file);
scan.useDelimiter("\\Z");
String content = scan.next();
或者您也可以使用Guava
String data = Files.toString(new File("path.txt"), Charsets.UTF8);
答案 4 :(得分:0)
从Java 11开始,您可以更轻松地实现它:
import java.nio.file.Files;
Files.readString(Path path);
Files.readString(Path path, Charset cs)