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

Posted

技术标签:

【中文标题】用于在 Java 中读取文件的最佳/最简单的类是啥?【英文标题】:What are the best/simplest classes used for reading files in Java?用于在 Java 中读取文件的最佳/最简单的类是什么? 【发布时间】:2011-02-05 19:08:26 【问题描述】:

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

【问题讨论】:

在这个较新的相关问题中,对 JDK 的内置文件 IO 类有一个很好的介绍:***.com/questions/19430071/… 【参考方案1】:

扫描仪:

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

【讨论】:

喜欢各种各样的方法,Scanner 提供。谢谢。简单干净。【参考方案2】:

看看Scanner 类。

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

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

【讨论】:

@Maxym:这个答案需要补充一个使用示例。谢谢。【参考方案3】:

你可以使用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();

【讨论】:

扫描仪似乎更简单,有更多选择。但是感谢您将必要的代码放在这里。 +1 只是“顺便说一句”,当Java7来时,它会有“自动资源管理”,这意味着我们不需要try ... finally out.close() - 关闭将由JVM完成,它会照顾好它。【参考方案4】:

如果您愿意使用3rd party libraries,那么诸如Files 来自Guava 或FileUtils 来自Apache Commons IO 的实用程序类可以让读取文件变得非常简单。

下面的示例(其中File file = new File("path/to/file.txt"))将文本文件的所有行读入列表,并将整个文件读入字符串。

番石榴:

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 的东西质量更高。

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

诚然,JDK 现在为这个特定目的提供了一些足够的工具(Scanner);当something like this 是替代方案时,使用第 3 方库读取文件更合理。

【讨论】:

我确实试图不使用第 3 方库。但是,我以前听说过那个图书馆。它似乎正在获得认可。 @约翰。呵呵,“获得认可”可能是一种表达方式。我的经验是,自 00 年代初以来,Apache Commons 的库一直是典型 Java 项目的中流砥柱(最近加入/被谷歌的库取代,例如 Guava)。当然,在添加依赖项之前应该仔细考虑,但是像 Commons IO 这样的东西通常很容易发挥作用。【参考方案5】:

Apache commons 总是一个不错的起点。

见http://commons.apache.org/io/

【讨论】:

【参考方案6】:

你可以试试 apache 的 FileUtils。方法如

for(String line: FileUtils.readLines(file)) 
   System.out.println(line);

【讨论】:

【参考方案7】:

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

【讨论】:

以上是关于用于在 Java 中读取文件的最佳/最简单的类是啥?的主要内容,如果未能解决你的问题,请参考以下文章

java中对文件进行读写操作的基本类是啥?

java中的Dao类是啥意思?

如何判断 Swift 中实例变量的类是啥

从 C++ 调用 Java 方法的最简单方法是啥?

保持从文件中读取的字符串值列表的最佳java方法是啥[关闭]

在 Java 中读取精灵表的最佳方法是啥?