import java.util.*;import java.io.*;public class Test{ private File root; public Test(File root){ this.root=root; } public static void main(String[] args){ String filePath = ""; if(args.length!=1){ System.out.println("错误参数"); System.exit(0); } filePath = args[0]; File f = new File(filePath); if(f.exists()){ }else{ System.out.println("目录/文件不存在"); } Test t = new Test(f); t.calculate(); } public void calculate(){ if(this.root.isDirectory()){ //递归计算子目录大小 File[] t = this.root.listFiles(); for(File f :t ){ long len = this.calculate(f); String ext = ""; if(len>=1024 &&len<1024*1024 ){ ext = len/1024+"KB"; }else if(len>=1024*1024 && len<1024*1024*1024){ ext = len/(1024*1024)+"MB"; }else if(len>1024*1024*1024){ ext = len/(1024*1024*1024)+"GB"; }else{ ext = len+"Bytes"; } System.out.println((f.isFile()?"文件 ":"目录 ")+f.getName()+":\t"+ext ); } }else{ //直接显示大小 System.out.println("文件 "+this.root.getName()+":\t"+this.root.length()+"Bytes" ); } } public long calculate(final File f){ if(f.isFile()){ return f.length(); }else{ File[] t = f.listFiles(); long len = 0l; for(File fs :t ){ len += this.calculate(fs); } return len; } } }