对文件的操作
import java.io.File;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Scanner;
public class FileUtil{
/**
显示路径下的所有文件的信息,递归
*/
public static void showAllDirectoryInfo(File ff,int level){
if(ff==null || ff.exists()==false){
return;
}
StringBuffer sb = new StringBuffer();
for(int i=0;i<level;i++){
sb.append("\t");
}
System.out.println( sb.toString()+ ff.getName() );
if( ff.isDirectory()){ //如果是一个目录
File[] fs = ff.listFiles();
if(fs!=null && fs.length>0){
for(File f:fs){
showAllDirectoryInfo( f,level+1 );
}
}
}
}
/**
输出目录 ff 下所有的文件和目录的信息,就是求出文件的大小,有多少个文件夹等信息(非递归的)
*/
public static void showDirectry(File ff){
if(ff==null || ff.isFile()){
return; //当文件为空并且不是一个目录时,就返回
}
int fileCount=0;
int directoryCount=0;
int fileTotalLength=0;
File [] fs = ff.listFiles(); //列出目录下面所有的文件
if(fs!=null && fs.length>0){
for(File f:fs){
if(f.isFile()){
fileCount++;
fileTotalLength+=f.length(); //求出所有文件的总长度
}else{
directoryCount++; //求出有多少个目录
}
System.out.println( getFileInformation(f) );
}
}
System.out.println( "\t\t\t"+fileCount+" 个文件,总大小为:"+fileTotalLength+"字节");
System.out.println("\t\t\t"+directoryCount+"目录");
}
/**
获取整条文件的信息
*/
public static String getFileInformation( File f){
//求文件的最后修改时间的,返回是的是一个长整型,将其转化成我们要它输出的格式
long modifierDate = f.lastModified();
Date d = new Date( modifierDate );
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String showDate = sdf.format( d );
String fileType = f.isFile()?"\t":"<DIR>"; //获取文件类型,当是一个文件时,就输出空格,当是一个文件夹是就输出DIR
String fileLength = getFileLength( f ); //得到文件的长度
return showDate+"\t"+fileType+"\t"+fileLength+"\t"+f.getName();
}
/**
获取文件的长度的
*/
public static String getFileLength(File file){
if( file.isDirectory() ){ //当是一个目录时,就返回空格
return "\t";
}
long length = file.length(); //取出文件的长度
if(length/1024/1024/1024>0){
return length/1024/1024/1024+"GB";
}
if(length/1024/1024>0){
return length/1024/1024+"MB";
}
if(length/1024>0){
return length/1024+"KB";
}
return length+"B";
}
}