【问题标题】:Text file into Java List<String> using Commons or Guava使用 Commons 或 Guava 将文本文件放入 Java List<String>
【发布时间】:2011-06-02 14:14:10
【问题描述】:

使用 Commons 或 Guava 库将每一行文本(来自文本文件)放入 LinkedList(作为 String 对象)或其他一些集合中的最优雅的方法是什么。

【问题讨论】:

    标签: java file text guava apache-commons


    【解决方案1】:

    我不确定您是否只想知道如何通过 Guava 或 Commons IO 执行此操作,但从 Java 7 开始,这可以通过 java.nio.file.Files.readAllLines(Path path, Charset cs) (javadoc) 完成。

    List<String> allLines = Files.readAllLines(dir.toPath(), StandardCharsets.UTF_8);
    

    由于这是 Java SE 的一部分,因此不需要您向项目中添加任何额外的 jar 文件(Guava 或 Commons)。

    【讨论】:

      【解决方案2】:

      你可以使用番石榴:

      Files.readLines(new File("myfile.txt"), Charsets.UTF_8);
      

      或者apache commons io:

      FileUtils.readLines(new File("myfile.txt"));
      

      我想说两者都同样优雅。

      根据您的具体用途,假设“默认编码”可能是个好主意。无论哪种方式,我个人觉得 Guava API 清楚地表明您正在对文件的编码做出假设是很好的。

      更新: Java 7 现在内置了这个:Files.readAllLines(Path path, Charset cs)。您还必须明确指定字符集。

      【讨论】:

        【解决方案3】:

        下面是使用Guava的方法:

        List<String> lines = Files.readLines(new File("myfile.txt"), Charsets.UTF_8);
        

        参考:

        【讨论】:

          【解决方案4】:

          这可能就是你要找的东西

          FileUtils.readLines(File file)

          【讨论】:

            【解决方案5】:

            它们非常相似,使用 Commons IO 看起来像这样:

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

            Guava 的主要优点是字符集的规范(没有拼写错误):

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

            【讨论】:

              【解决方案6】:

              使用 org.apache.commons.io.FileUtils

              FileUtils.readLines(new File("file.txt"));
              

              【讨论】:

                【解决方案7】:

                使用Apache Commons IO,可以使用FileUtils#readLines方法。很简单:

                List<String> lines = FileUtils.readLines(new File("..."));
                for (String line : lines) {
                  System.out.println(line);  
                }
                

                【讨论】:

                • IOUtils.lineIterator 是更好的选择,因为它不会将整个文件加载到内存中。
                猜你喜欢
                • 2011-08-13
                • 1970-01-01
                • 1970-01-01
                • 2013-07-01
                • 2011-02-16
                • 1970-01-01
                • 2017-02-21
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多