对文件的操作

时间:2023-02-16 16:22:26

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";
}
}