用于在Java中读取文件的最佳/最简单的类是什么?

时间:2011-02-05 19:08:26

标签: java file file-io

我对简单的线条处理感兴趣。

7 个答案:

答案 0 :(得分:7)

查看Scanner课程。

在Java 5中添加了它,使得读取字符串和文件比旧的FileReaders和FileInputStream链更容易(不再需要new BufferedReader(new FileReader())来获取readLine方法)。

在Scanner类中,您可以使用nextLine方法一次读取一行,但它也有许多用于在文件中查找基元和正则表达式的util方法。

答案 1 :(得分:7)

扫描仪:

for(Scanner sc = new Scanner(new File("my.file")); sc.hasNext(); ) {
  String line = sc.nextLine();
  ... // do something with line
}

答案 2 :(得分:4)

您可以使用BufferedReader,如下所示: -

try {
    BufferedReader input = new BufferedReader(new FileReader(new File("c:\\test.txt")));
    try {
        String line = null;
        while ((line = input.readLine()) != null) {
            System.out.println(line);
        }
    } finally {
        input.close();
    }
} catch (IOException ex) {
    ex.printStackTrace();
}

答案 3 :(得分:2)

如果您愿意使用3rd party libraries,那么来自FilesGuava或来自FileUtilsApache Commons IO等实用程序类会使读取文件非常重要简单。

以下示例(其中File file = new File("path/to/file.txt"))将文本文件的所有行读入List,并将整个文件读入String。

番石榴:

List<String> lines = Files.readLines(file, Charsets.UTF_8);

String contents = Files.toString(file, Charsets.UTF_8);

Apache Commons IO:

List<String> lines = FileUtils.readLines(file, "UTF-8");

String contents = FileUtils.readFileToString(file, "UTF-8")

我的建议(截至2013年)是 Guava ,这是一个现代,干净,积极维护的图书馆。它通常比Apache Commons的质量更高。

当然,为此添加番石榴是没有意义的,因为它是一个相对较大的库。另一方面,今天在Java项目中使用Guava的会让IMO变得愚蠢。 :-)

诚然,JDK现在为此特定目的提供了一些适当的工具(Scanner);当something like this替代时,使用第三方库来阅读文件更合理。

答案 4 :(得分:1)

Apache commons始终是一个很好的起点。

请参阅http://commons.apache.org/io/

答案 5 :(得分:1)

你可以试试apache的FileUtils。像

这样的方法
for(String line: FileUtils.readLines(file)) {
   System.out.println(line);
}

答案 6 :(得分:0)

你也可以使用包装在BufferedReader中的InputStreamReader(你使用像FileInputStream这样的InputStream创建)来简单地读取文件行。