假设我想扫描一个包含4- .xlsx文件、8 -.docx文件、10 - .pdfs和4 .pptx文件的文件夹。我希望我的输出不仅包括文件的分类,而且包括所有文件的大小之和。
示例输出
文件类型\#文件类型:文件大小的总和(以MB为单位)
.xlsx \x{e 010}4
.docx /8-8- 85
我已经找到了一些基于扩展名查找和返回文件的其他代码,所以我只是想知道是否有一些java代码可以找到文件大小?我很抱歉如果我不清楚..。
谢谢你的进阶。
发布于 2014-10-24 14:01:34
这里有一个方法,可以在目录上递归使用(或不使用)。
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));
}
}发布于 2014-10-24 13:32:18
只需查看File对象的“长度”即可。
import java.io.File;
File file = new File(<filepath>);
int sizeInBytes = file.length();如果您已经有了计算特定类型文件的工作解决方案,那么您应该能够相当容易地集成大小之和。
https://stackoverflow.com/questions/26548835
复制相似问题