首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扫描文件夹并按文件类型返回文件大小

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

Stack Overflow用户
提问于 2014-10-24 13:26:28
回答 2查看 1K关注 0票数 0

假设我想扫描一个包含4- .xlsx文件、8 -.docx文件、10 - .pdfs和4 .pptx文件的文件夹。我希望我的输出不仅包括文件的分类,而且包括所有文件的大小之和。

示例输出

文件类型\#文件类型:文件大小的总和(以MB为单位)

.xlsx \x{e 010}4

.docx /8-8- 85

我已经找到了一些基于扩展名查找和返回文件的其他代码,所以我只是想知道是否有一些java代码可以找到文件大小?我很抱歉如果我不清楚..。

谢谢你的进阶。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-24 14:01:34

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

代码语言:javascript
复制
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));
    }

}
票数 1
EN

Stack Overflow用户

发布于 2014-10-24 13:32:18

只需查看File对象的“长度”即可。

代码语言:javascript
复制
import java.io.File;

File file = new File(<filepath>);
int sizeInBytes = file.length();

如果您已经有了计算特定类型文件的工作解决方案,那么您应该能够相当容易地集成大小之和。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26548835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档