gpt4 book ai didi

Java - 使用 DirectoryStream 计算文件夹中的所有文件扩展名

转载 作者:行者123 更新时间:2023-11-29 08:23:31 26 4
gpt4 key购买 nike

我想显示特定文件夹中的所有文件扩展名,并使用 DirectoryStream 给出每个扩展名的总数。

现在我只显示该文件夹中的所有文件,但我如何才能只显示它们的扩展名呢?我还应该获取这些文件的扩展名,并计算该文件夹中每个扩展名的总数(见下面的输出)。

public static void main (String [] args) throws IOException {

Path path = Paths.get(System.getProperty("user.dir"));

if (Files.isDirectory(path)){
DirectoryStream<Path> directoryStream = Files.newDirectoryStream(path);

for (Path p: directoryStream){
System.out.println(p.getFileName());
}
} else {
System.out.printf("Path was not found.");
}
}

输出应该是这样的。我想获得此输出的最佳方法是使用 lambda?

FILETYPE    TOTAL
------------------
CLASS | 5
TXT | 10
JAVA | 30
EXE | 27

最佳答案

首先检查是否是文件,如果是则提取文件扩展名。最后使用groupingBy收集器得到你想要的字典结构。这是它的样子。

try (Stream<Path> stream = Files.list(Paths.get("path/to/your/file"))) {
Map<String, Long> fileExtCountMap = stream.filter(Files::isRegularFile)
.map(f -> f.getFileName().toString().toUpperCase())
.map(n -> n.substring(n.lastIndexOf(".") + 1))
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
}

关于Java - 使用 DirectoryStream 计算文件夹中的所有文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55433557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com