Get content of a file in Java
我想用Java代码获取Linux的版本。在不同的Linux发行版中,我有不同名称的文件。
如何获取以-release结尾的每个文件内容?
- 最新版本!=当前版本。您想知道当前运行的Linux版本吗?
您可以使用File.listFiles(FilenameFilter)。
1 2 3 4 5 6 7 8
| File f = new File("/etc/");
File[] allReleaseFiles = f. listFiles(new FilenameFilter() {
@Override
public boolean accept (File dir, String name ) {
return name. endsWith("-release");
}
}); |
- 这是最好的解决方案吗?我可以优化这个代码吗?
- 您想在这里优化什么?代码简短、精确、可读。将过滤器应用于文件列表,生成的File[]正好包含所需的文件。
- @彼得本佐夫你试过了吗?是不是太慢了?不要过早优化
- @彼得本佐夫,这只是API提供的便利。如果你想自己做,你可以列出etc文件夹中的所有文件,只在for loop中添加以release结尾的文件。我认为你不能进一步优化这个。
- 好的,谢谢你的回答。
使用JavaJava.IO文件FixListFrfile,然后简单地迭代它返回的数组来打开文件。
1
| System. getProperty("os.version") |
当然,您现在应该使用NIO来执行这种操作:
1 2 3
| Path dir = Paths. get("/etc");
for (Path file : Files. newDirectoryStream(dir, "*-release"))
System. out. println (new String(Files. readAllBytes(file ), "UTF-8")); |
在执行ls -d /etc/*-release之后,您可以通过获取输出来获取文件。
然后通过Java File与他们合作。
参见:
- 我认为,运行依赖平台的命令而不是使用语言能力是不正确的。