File的综合应用

package com.beiwo.homework;

import java.io.File;

/*
       4.将一个文件夹中所有的文件查找出来,按照一定的格式
     分析 :  1.一个文件夹中存在文件,子文件夹
        2.除了当前文件夹,还有子文件夹中的文件也需要找出来。
        3.子文件查找文件和当前文件查找文件是一样的操作,就可以定义一个方法来做文件查找
        
       3.删除一周前的数据
       
       2.获取文件夹中所有文件的大小
       
       1.判断是否有隐藏文件
        
      
           
 */
public class HomeWork {

    static int totalSize = 0; //只会被创建一次
    
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        //1.获取指定文件夹
        File file = new File("D:\java课件及资料\第十八次课");
        
        //2.调用查找的方法
        getFile(file, 1);
        
        //3.打印文件的总大小
        System.out.println("文件夹的总大小:"+totalSize*1.0/(1024 *1024*1024)+"G");
        
        

    }
    
    //4.判断隐藏文件
    public static boolean getHiddenFile(File file){
        
        return file.isHidden();
    }
    
    //3.获取文件夹中所有文件的大小
    public static void getFileSize(File file){
        
         
         if(file.isFile()){
             
             totalSize+=file.length();
         }
         
    }
    
    
    //删除一周前数据
    public static void deleteAfterWeekFile (File file){
        
        //1.获取文件最后一次被操作的时间
        long lastTime = file.lastModified();
        
        //2.获取当前的时间毫秒数
        long currentTime = System.currentTimeMillis();
        
        //3.做时差  毫秒数
        long time = currentTime - lastTime;
        
        //4.将毫秒数转为天数
        int day = (int)(time / (1000*60*60*24));
        
        if(day>=7){
            
            //删除文件操作
            if(file.isFile()){
                
                file.delete();
            }
            
        }
        
        
    }
    
    
    //区分目录结构
    public static String flag(int count){
        String str ="";
        for(int i = 0 ; i < count ;i++){
            str+="--"+" ";
        }
        return str;
        
    }
    
    /**
     *  查找文件夹中所有的文件
     * @param targetPath : 需要查找的文件的的路径
     * @param count      : 记录子目录的个数
     */
    public static void getFile(File file,int count){ //1
        //获取文件的抽象路径
        //File file = new File(targetPath);
        
        if(file.exists()){ // 代表文件夹存在
            
            //获取当前目录中的文件和文件夹
            File[] files = file.listFiles();
            
            for (File file2 : files) {
                //打印输出
                System.out.println(flag(count)+file2.getName());
                //file2到底是文件夹还是文件
                if(file2.isDirectory()){ // file2是文件夹
                    //count++; //count = count+1  // count 2   3
                    //继续查找 递归调用
                    getFile(file2,count+1); // 2  count = 1
                    
                }
                
                //判断文件是否需要删除
                if(file2.isFile()){
                    
                    deleteAfterWeekFile(file2);
                    
                    //获取文件总大小
                    getFileSize(file2);
                }
                
             //判断是否有隐藏的数据
                if(getHiddenFile(file2)){
                    
                    System.out.println(file2.getName()+"这是隐藏的文件");
                }
            }
            
        }
    }

}
原文地址:https://www.cnblogs.com/zhv5/p/6134710.html