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;
}
}
}
转载于:https://my.oschina.net/hand515/blog/102911