我有一个包含成千上万个文件的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);