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()+"这是隐藏的文件");
}
}
}
}
}