关于nio:使用Java获取文件的内容

Get content of a file in Java

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

1
/etc/*-release

如何获取以-release结尾的每个文件内容?


您可以使用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");
        }
    });


使用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与他们合作。

参见:

  • ls命令
  • 如何从Java中执行shell命令