我试图将一个简单的文本文件读入字符串。当然,通常有获取输入流并使用readLine()迭代并将内容读入String的方法。

在过去做了数百次之后,我只是想知道如何用最少的代码行来完成这个任务?java中没有类似String fileContents = XXX.readFile(myFile/*File*/) ..而是像这样简单的东西?

我知道有像Apache Commons IO这样的库可以提供这样的简化,甚至我可以写一个简单的Util类来做这件事。但我想知道的是——这是一个如此频繁的操作,每个人都需要,那么为什么Java不提供这样简单的函数?难道真的没有一个方法可以将文件读入具有默认或指定编码的字符串吗?


当前回答

从Java 7 (API描述)开始,你可以做:

新字符集(文件.readAllBytes(Paths.get(filePath),默认文件.UTF_8);

其中filePath是一个字符串,表示您要加载的文件。

其他回答

你可以使用apache commons IO..

FileInputStream fisTargetFile = new FileInputStream(new File("test.txt"));

String targetFileStr = IOUtils.toString(fisTargetFile, "UTF-8");

这应该对你有用:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public static void main(String[] args) throws IOException {
    String content = new String(Files.readAllBytes(Paths.get("abc.java")));
}

很遗憾,没有。

我同意这样频繁的操作应该比在循环中逐行复制输入更容易实现,但您必须要么编写helper方法,要么使用外部库。

使用Apache Commons IO。

import org.apache.commons.io.FileUtils;

//...

String contents = FileUtils.readFileToString(new File("/path/to/the/file"), "UTF-8")

您可以在de javadoc中查看该方法的详细信息。

从Java 7 (API描述)开始,你可以做:

新字符集(文件.readAllBytes(Paths.get(filePath),默认文件.UTF_8);

其中filePath是一个字符串,表示您要加载的文件。