`

用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  
谢谢,很有用,借鉴了

相关推荐

Global site tag (gtag.js) - Google Analytics