我有一个包含成千上万个文件的Windows目录。我需要将所有唯一文件扩展名的列表放入变量中。

在Java程序中,我想浏览该目录(递归包括所有子目录),并检索可以放入变量中的唯一文件扩展名列表。

例如:目录包含:File1.txt File2.doc File3.doc File4.doc File5.ppt
我想检索“ txt,doc,ppt”并将其放入字符串变量中(它们不必以任何类型的数组分隔-尽管可以使用。我只需要以它们的字符串结尾即可) ,就像上面的一样)。

反正我能做到这一点吗?可能通过访问命令行或使用正则表达式?

最佳答案

这是一个Java 8示例

    final String extensions = Files.walk(Paths.get(""))
            .map(Path::toString)
            .filter(pathString -> pathString.contains("."))
            .map(pathString -> pathString.substring(pathString.lastIndexOf('.') + 1, pathString.length()))
            .distinct()
            .collect(Collectors.joining(","));

    System.out.println(extensions);

08-24 20:20