Get content of a file in Java
我想用Java代码获取Linux的版本。在不同的Linux发行版中,我有不同名称的文件。
如何获取以-release结尾的每个文件内容?
		
		
- 最新版本!=当前版本。您想知道当前运行的Linux版本吗?
 
	 
您可以使用File.listFiles(FilenameFilter)。
| 12
 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来执行这种操作:
| 12
 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与他们合作。
参见:
		
		
- 我认为,运行依赖平台的命令而不是使用语言能力是不正确的。