`

用Java 计算一个文件夹以及子文件夹在内的总大小

    博客分类:
  • Java
阅读更多

应对文件夹内还可能有子文件夹的问题,我们使用递归的方法来解决,每次遇到一个文件则返回文件的大小,如果遇到一个文件夹,则用file.listFiles()来获取其目录下的所有文件和子目录,递归计算他们的大小,再将总大小返回

 

package filetest;

import java.io.*;

/**
 * 文件处理
 * @author weidong
 *
 */
public class FileEdit {

	double size = 0.0;

	/**
	 * 计算文件或者文件夹的大小 ,单位 MB
	 * @param file 要计算的文件或者文件夹 , 类型:java.io.File
	 * @return 大小,单位:MB
	 */
	public double getSize(File file) {
		//判断文件是否存在
		if (file.exists()) {
			//如果是目录则递归计算其内容的总大小,如果是文件则直接返回其大小
			if (!file.isFile()) {
				//获取文件大小
				File[] fl = file.listFiles();
				double ss = 0;
				for (File f : fl)
					ss += getSize(f);
				return ss;
			} else {
				double ss = (double) file.length() / 1024 / 1024;
				System.out.println(file.getName() + " : " + ss + "MB");
				return ss;
			}
		} else {
			System.out.println("文件或者文件夹不存在,请检查路径是否正确!");
			return 0.0;
		}
	}

	public static void main(String[] args) throws IOException {
		FileEdit fd = new FileEdit();
		double all = fd.getSize(new File("f:\\电影"));
		System.out.println("ALL:  " + all + "MB");

	}
}

分享到:
评论
3 楼 sp42 2015-08-16  
不客气地收下啦 谢谢
2 楼 RookieDong 2011-10-30  
effort_fan 写道
谢谢,很有用,借鉴了

不用客气啦,自己的代码能帮到别人,我也很高兴。欢迎讨论哈
1 楼 effort_fan 2011-10-28  
谢谢,很有用,借鉴了

相关推荐

    ewebeditor中net文件夹下java源文件

    3. **MyEclipse**:MyEclipse是一款强大的Java EE集成开发环境,它支持包括Java在内的多种编程语言,并提供对Web应用、数据库和企业级应用的开发支持。在MyEclipse中,源代码是必要的,因为它能帮助开发者调试代码、...

    文件夹复制

    文件夹复制是指将一个或多个文件夹及其内部的所有子文件和子文件夹完整地复制到另一个位置。这个过程可以是本地磁盘间的操作,也可以涉及网络驱动器或者云存储。复制过程中,原始文件夹的结构和内容会被完全保留,...

    总程序的eclipse文件夹

    "总程序的eclipse文件夹"这个标题表明我们正在处理一个包含整个项目结构的Eclipse工作空间,这可能是一个包含了源代码、配置文件、依赖库等在内的完整开发项目。 描述中提到“上面代码没办法直接复制编译通过,由于...

    java+Swing打包成exe可安装文件

    - 创建一个专门的资源文件夹,用于存放程序运行所需的外部资源,如数据库文件、图片、声音文件等。 - 将JRE(Java Runtime Environment)也放入该文件夹中,以便后续打包时能够将其包含在内。 2. **打包Java程序...

    Java遍历输出指定目录、树形结构所有文件包括子目录下的文件

    在Java编程中,遍历和输出指定目录以及其树形结构下的所有文件,包括子目录中的文件,是一项常见的任务。这个任务通常涉及到文件系统操作和递归算法的应用。以下将详细解释如何使用Java来实现这一功能。 首先,我们...

    java编写的类QQ的QicQ聊天软件(内网使用)

    Java编写的QICQ聊天软件是一款基于...总的来说,这款Java编写的QICQ聊天软件融合了Java语言的核心特性、网络编程技术、多线程处理、数据传输和用户界面设计等多个方面的知识,构建了一个适用于内网环境的即时通讯工具。

    多线程全面遍历磁盘文件

    2. **划分工作区域**:将磁盘分区或目录树划分成多个独立的区域,每个区域分配给一个线程处理。可以按照磁盘扇区、文件夹层次或者文件大小来划分。 3. **线程同步**:由于磁盘文件可能被多个线程同时访问,所以需要...

    Java通过Exchange协议发送和接收邮件

    首先,JavaMail API是一个开源的Java库,它允许开发人员编写能够发送和接收邮件的应用程序。然而,JavaMail API并不直接支持Exchange服务器,因此在与Exchange服务器交互时,我们需要借助EWS Java API。微软官方提供...

    java游戏demo.zip

    总的来说,"java游戏demo.zip"提供了一个实践性的平台,无论是对于学习Java编程还是游戏开发的初学者,或者是寻找灵感的专业开发者,都可以从中受益。通过对项目的解压、运行和代码阅读,我们可以深入理解Java在游戏...

    基于Java开发的一款基于Netty的内网穿透工具,主要用于将内网服务反向代理到公网访问.zip

    标题中的“基于Java开发的一款基于Netty的内网穿透工具”揭示了我们正在讨论的是一个使用Java编程语言,并且依赖于Netty框架的软件应用。Netty是一个高性能、异步事件驱动的网络应用程序框架,常用于开发服务器和...

    Delphi.rar_AES_AES加密_delphi AES加密_delphi 加解密_java delphi aes

    对于Java平台,Java Cryptography Extension (JCE) 是一个标准的Java API,提供了包括AES在内的多种加密算法。Java中的AES加密同样有多种工作模式可供选择,并且JCE也提供了易于使用的API来实现这些操作。为了实现...

    java file upload BLOB

    - 准备一个 SQL 插入语句,其中包含了多个字段,包括一个名为 `JPGUPLOAD` 的 BLOB 字段。 - 使用 `PreparedStatement` 设置参数值,对于 BLOB 类型的字段,使用 `setBlob` 方法设置为空的 BLOB 对象。 - 最后,...

    java开发实战1200例 (第I卷)源码

    在这个压缩包中,我们可以期待找到一系列独立的Java程序,每个都对应一个特定的编程概念或技术。这些例子可能包括基本的数据类型、控制流程(如if语句、for循环、while循环)、类与对象(封装、继承、多态)、异常...

    小程序完整demo:飞翔的小鸟:canvas实现,java后端(适用1221).zip微信小程序模板源码

    该压缩包文件“小程序完整demo:飞翔的小鸟:canvas实现,java后端(适用1221).zip”包含了一个微信小程序的完整示例,名为“飞翔的小鸟”,它使用了HTML5的Canvas技术和Java后端来构建。这个项目不仅展示了如何在...

    java会议室预约系统.zip

    会议室预约系统:基于Java语言和MySQL数据库。开发工具使用IDEA。 本项目是我为我们学校经管学院开发的会议室预约系统,基于SSM框架,权限管理使用Shiro框架。用户权限分为普通用户和管理员。普通用户可以申请会议室...

    Java-毕向东学习笔记

    2. **JAVA_HOME变量**:为了避免频繁修改`PATH`变量,可以创建一个名为`JAVA_HOME`的环境变量,指向JDK的安装目录。然后,在`PATH`变量中引用`%JAVA_HOME%\bin`即可。 ##### 临时环境变量配置 1. **使用`set`命令*...

    基于 LeeSite 的项目骨架生成工具,可以快速的搭建一个将 LeeSite 作为依赖的 Java Web 项目.zip

    【标题】中的“基于 LeeSite 的项目骨架生成工具”指的是一个专门用于创建基于 LeeSite 框架的 Java Web 项目初始结构的自动化工具。LeeSite 是一个可能的开源 Java Web 开发框架,旨在简化项目的搭建过程,提高开发...

    ZipTest.rar

    如果这个"ZipTest"是一个文件夹,里面可能有按照章节划分的子文件夹,每个子文件夹中包含相应的阅读材料和代码示例;如果是一个文件,那它可能就是书的电子版,例如PDF或EPUB格式。 Java 2核心技术是Java编程的经典...

    java小程序 仅供参考

    "biyecheji"可能是Java小程序的源代码文件夹,其中可能包含了多个.java文件,每个文件代表一个类或模块。通过阅读和分析这些源代码,我们可以了解程序的结构、数据处理方式、事件驱动模型,以及如何与其他组件进行...

Global site tag (gtag.js) - Google Analytics