package net.loyin.util;
import java.io.File;
import java.io.FileInputStream;
import java.text.DecimalFormat;
public class FileTool {
public long folderCount;
public long flieCount;
public long totalSize;
/**
* 取文件大小
* @param f
* @return
* @throws Exception
*/
public long getFileSize(File f) throws Exception{//取得文件大小
long s=0;
if (f.exists()) {
FileInputStream fis = null;
fis = new FileInputStream(f);
s= fis.available();
} else {
f.createNewFile();
System.out.println("文件不存在");
}
return s;
}
/**
* 文件夹大小
* @param f
* @return
* @throws Exception
*/
// 递归
public void getFolderSize(File f)throws Exception//取得文件夹大小
{
File flist[] = f.listFiles();
for (File fc: flist)
{
if (fc.isDirectory())
{ folderCount++;
getFolderSize(fc);
} else
{ flieCount++;
totalSize += fc.length();
}
}
}
public String FormetFileSize(long fileS) {//转换文件大小
DecimalFormat df = new DecimalFormat("#.000");
String fileSizeString = "";
if (fileS < 1024) {
fileSizeString = df.format((double) fileS) + "B";
} else if (fileS < 1048576) {
fileSizeString = df.format((double) fileS / 1024) + "KB";
} else if (fileS < 1073741824) {
fileSizeString = df.format((double) fileS / 1048576) + "MB";
} else {
fileSizeString = df.format((double) fileS / 1073741824) + "GB";
}
return fileSizeString;
}
public static void main(String args[])
{
FileTool g = new FileTool();
long startTime = System.currentTimeMillis();
try
{
long l = 0;
String path = "E:\\temp";
File ff = new File(path);
g.getFolderSize(ff);
System.out.println(g.FormetFileSize(g.totalSize));
System.out.println(g.flieCount);
System.out.println(g.folderCount);
} catch (Exception e)
{
e.printStackTrace();
}
long endTime = System.currentTimeMillis();
System.out.println("总共花费时间为:" + (endTime - startTime) + "毫秒...");
}
}