gpt4 book ai didi

Java - 扫描文件夹并按文件类型返回文件大小

转载 作者:行者123 更新时间:2023-12-01 12:22:50 25 4
gpt4 key购买 nike

假设我要扫描一个包含 4 个 .xlsx 文件、8 个 .docx 文件、10 个 .pdf 和 4 个 .pptx 文件的文件夹。我希望我的输出不仅包括文件的分割,还包括所有文件的大小总和。

示例输出
文件类型 |文件数量 |文件大小总和(以 MB 为单位)
.xlsx | 4 | 32
.docx | 8 | 85

我发现了一些其他代码可以根据扩展名查找并返回文件,所以我只是想知道是否有一些 java 代码可以查找文件大小?如果我不清楚,我深表歉意......

提前致谢。

最佳答案

这里有一个可以在目录上递归使用(或不递归使用)的方法

private static HashMap<String, Long> sizesForDirectory(String directory, boolean recurseInSubDirectories) {
File folder = new File(directory);
File[] listOfFiles = folder.listFiles();

HashMap<String, Long> sizesByExtension = new HashMap<String, Long>();
if (listOfFiles != null) {
for (File file : listOfFiles) {
if (!file.isDirectory()) {
String extension = file.getName().replaceAll(".*\\.", "");
if (sizesByExtension.containsKey(extension)) {
Long size = sizesByExtension.get(extension) + Long.valueOf(file.length());
sizesByExtension.put(extension, size);
} else {
sizesByExtension.put(extension, file.length());
}
} else if (recurseInSubDirectories) {
HashMap<String, Long> sizesForSubdirectory = sizesForDirectory(file.getAbsolutePath(), recurseInSubDirectories);
for (String ext : sizesForSubdirectory.keySet()) {
if (sizesByExtension.containsKey(ext)) {
sizesByExtension.put(ext, sizesByExtension.get(ext) + sizesForSubdirectory.get(ext));
} else {
sizesByExtension.put(ext, sizesForSubdirectory.get(ext));
}
}
}
}
}

return sizesByExtension;
}

public static void main(String[] args) {

HashMap<String, Long> sizesByExtension = sizesForDirectory("your/path", true);

for (String ext : sizesByExtension.keySet()) {
System.out.println(ext + " : " + sizesByExtension.get(ext));
}

}

关于Java - 扫描文件夹并按文件类型返回文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26548835/

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