packagecom.uudisk.utils;importjava.io.File;importjava.io.FileInputStream;importjava.text.DecimalFormat;importjava.util.ArrayList;importjava.util.LinkedList;importjava.util.List;importcom.uudisk.domain.DirBean;importcom.uudisk.domain.FileBean;importcom.uudisk.domain.RootBean;public classIterateDir {/** 获取根目录信息*/
public static ListgetDiskInfo(){//获取盘符
File []files=File.listRoots();
Listroots=new ArrayList();for(File file:files){if(file.getTotalSpace()!=0){
RootBean rootBean=newRootBean();
rootBean.setDiskPath(file.getAbsolutePath());
rootBean.setDiskName(file.getAbsolutePath().charAt(0)+"");
rootBean.setDiskSize(FormetFileSize(file.getTotalSpace()));
rootBean.setAvilableSize(FormetFileSize(file.getFreeSpace()));
roots.add(rootBean);
}
}returnroots;
}/** 通过递归得到某一路径下所有的目录及其文件*/
public static DirBean getFiles(String dirPath) throwsException{
File root= newFile(dirPath);
DirBean dirBean=null;if(root.exists()){
dirBean=newDirBean();
String dirSize="";int dirCount=0;
List filelist=new LinkedList();if(root.isDirectory()){
File[] files=root.listFiles();for(File file : files) {
FileBean fileBean=newFileBean();
String realPath=file.getAbsolutePath();
fileBean.setFilePath(realPath);
fileBean.setFileName(getFileName(realPath));if(file.isDirectory()) {
fileBean.setFileType("DIR");//fileBean.setFileSize(FormetFileSize(getFileSize(file)));
fileBean.setFileSize("");
}else{
fileBean.setFileType(getFileType(getFileName(realPath)));
fileBean.setFileSize(FormetFileSize(getFileSizes(file)));
}
filelist.add(fileBean);
}
}else{
dirSize=FormetFileSize(getFileSizes(root));
}
dirBean.setDirCount(dirCount);
dirBean.setDirSize(dirSize);
dirBean.setDirPath(dirPath);
dirBean.setFiles(filelist);
}else{
System.out.println("文件或文件目录不存在");
}returndirBean;
}private staticString getFileType(String fileName) {return fileName.substring(fileName.lastIndexOf(".")+1).toUpperCase();
}//获取文件名
staticString getFileName(String filePath) {
String [] fileItems=filePath.split("\\\\");return fileItems[fileItems.length-1];
}//取得文件大小
public static long getFileSizes(File f) throwsException{long s=0;if(f.exists()) {
FileInputStream fis= null;
fis= newFileInputStream(f);
s=fis.available();
}else{
System.out.println("文件不存在");
}returns;
}//取得文件夹大小
public static long getFileSize(File f)throwsException
{long size = 0;
File flist[]=f.listFiles();for (int i = 0; i < flist.length; i++)
{if(flist[i].isDirectory())
{
size= size +getFileSize(flist[i]);
}else{
size= size +flist[i].length();
}
}returnsize;
}public static String FormetFileSize(long fileS) {//转换文件大小
DecimalFormat df = new DecimalFormat("#.00");
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) + "M";
}else{
fileSizeString= df.format((double) fileS / 1073741824) + "G";
}returnfileSizeString;
}public static long getlist(File f){//递归求取目录文件个数
long size = 0;
File flist[]=f.listFiles();
size=flist.length;for (int i = 0; i < flist.length; i++) {if(flist[i].isDirectory()) {
size= size +getlist(flist[i]);
size--;
}
}returnsize;
}
}