【问题标题】:Get content of a file in Java在Java中获取文件的内容
【发布时间】:2014-06-13 22:18:43
【问题描述】:

我想获得使用 Java 代码的 Linux 版本。在不同的 Linux 发行版中,我有不同名称的文件。

/etc/*-release

如何获取所有以-release 结尾的文件内容?

【问题讨论】:

  • 最新版本!= 当前版本。想知道当前运行的 linux 版本吗?

标签: java nio


【解决方案1】:

你可以使用@987654321@

    File f = new File("/etc/");
    File[] allReleaseFiles = f.listFiles(new FilenameFilter() {

        @Override
        public boolean accept(File dir, String name) {
            return name.endsWith("-release");
        }
    });

【讨论】:

  • 这是最好的解决方案吗?我可以优化这段代码吗?
  • 这里要优化什么?代码简短、准确且易读。您将过滤器应用于文件列表,生成的 File[] 恰好包含您要求的文件。
  • @PeterPenzov 你试过了吗?是不是太慢了?不要过早优化
  • @PeterPenzov 这只是 API 提供的便利。如果您想自己做,您可以列出etc 文件夹中的所有文件,并仅在for loop 中添加以release 结尾的文件。我不认为你可以进一步优化这个。
【解决方案2】:

使用 Java java.io.File#listFiles,然后简单地遍历它返回的数组以打开文件。

【讨论】:

    【解决方案3】:

    执行ls -d /etc/*-release后获取输出即可获取文件。

    然后通过Java File 与他们合作。

    另请参阅:

    【讨论】:

    • 我认为,运行依赖于平台的命令而不是使用语言能力是不正确的。
    【解决方案4】:
    System.getProperty("os.version")
    

    【讨论】:

      【解决方案5】:

      当然,你现在应该使用 nio 来执行这种类型的操作:

      Path dir = Paths.get("/etc");
      for (Path file : Files.newDirectoryStream(dir, "*-release"))
          System.out.println (new String(Files.readAllBytes(file), "UTF-8"));
      

      【讨论】:

        猜你喜欢
        • 2014-03-29
        • 2011-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-02
        • 1970-01-01
        • 2022-08-17
        • 2015-10-01
        相关资源
        最近更新 更多