在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中获取文件的内容的主要内容,如果未能解决你的问题,请参考以下文章