在Java中获取文件的内容

Posted

技术标签:

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

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

/etc/*-release

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

【问题讨论】:

最新版本!= 当前版本。想知道当前运行的 linux 版本吗? 【参考方案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 与他们合作。

另请参阅:

ls command How To Execute Shell Command From Java

【讨论】:

我认为,运行依赖于平台的命令而不是使用语言能力是不正确的。【参考方案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"));

【讨论】:

以上是关于在Java中获取文件的内容的主要内容,如果未能解决你的问题,请参考以下文章

java中怎么获取部分文本

在java项目中如何获取某个文件的路径

如果在java类中获取xml文件里面的标签里面的内容。

java怎么获取word文件中的数据

java中获取一个txt文本文件的文件名及内容的方法及方法所属的类

java代码怎么获取properties文件的内容