假设我想扫描一个包含4 - .xlsx文件,8 -.docx文件,10 - .pdfs和4 .pptx文件的文件夹。我希望我的输出不仅包括文件的细分,还包括它们放在一起的大小的总和。
示例输出
文件类型|文件数量|文件大小总和(以MB为单位)
.xlsx | 4 | 32
.docx | 8 | 85
我找到了一些基于扩展来查找和返回文件的其他代码,所以我只是想知道是否有一些java代码可以找到文件大小?如果我不清楚,我道歉...
先谢谢了。
答案 0 :(得分:0)
只需查看File对象的“长度”。
import java.io.File;
File file = new File(<filepath>);
int sizeInBytes = file.length();
如果您已经有一个可以计算特定类型文件的工作解决方案,那么您应该可以非常轻松地集成大小的总和。
答案 1 :(得分:0)
这里有一个方法可以在目录
上递归使用(或不使用)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));
}
}