您的位置:首页 > 其它

IO流笔记第七发文件夹目录显示及统计和各级文件删除(用到了DFS搜索)

2016-03-07 19:37 204 查看
一、文件目录显示(加强版)在第六发中的文件目录查询的基础上,进一步加强了性能,用来统计文件夹、文件、字节大小。基本思路还是和上一个简单的文件目录查询相似,但是用到了getAbsolutePath()方法来获得文件的路径。用for循环来查找files数组中的文件,如果是文件夹就递归count()方法。否则就输出此时文件的属性。

效果图如下:



实现代码如下:

package cn.hncu.io3;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileList {
int dirCount=0;
int fileCount=0;
int byteFile=0;

public FileList() {
count(new File("E:\\老廖java\\课堂代码区\\ioDemo4\\ioDemo"));
System.out.println("共有"+dirCount+"个文件夹");
System.out.println("共有"+fileCount+"个文件");
System.out.println("共有"+byteFile+"个字节");
}

private void count(File dir) {
System.out.println(dir.getAbsolutePath());
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");
File files[]=dir.listFiles();
for (int i = 0; i < files.length; i++) {
System.out.print(files[i].getName()+"\t");
if(files[i].isFile()){//如果是文件
System.out.print(files[i].length()+"B\t");
fileCount++;
byteFile+=files[i].length();
}else {//如果是文件夹
System.out.print("<DIR>\t");
dirCount++;
}
System.out.println(sdf.format(new Date(files[i].lastModified())));
}
System.out.println();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
count(files[i]);
}
}
}

public static void main(String[] args) {
new FileList();

}

}


二、文件的删除 之前也提到过要删除文件夹我们只能删除空的文件夹,即我们要先删除文件夹中的文件,再来删除这个空的文件夹。所以我们这里用for循环和递归来删除文件夹中的文件,当里面的文件删除后跳出这一次的递归就能删掉当前文件夹。为了防止程序将系统的e盘删掉我们用if来做一个防护,即if(f.getAbsolutePath().length()<5){return;}这样就可以防止删掉e盘了。其他盘下的同理即可。

实现代码如下:

package cn.hncu.io3;

import java.io.File;

public class FileDelteDFS {
public static void main(String[] args) {
String scrpath="e:"+File.separator+"bcde";
File f=new File(scrpath);
deleteMyFile(f);
}

private static void deleteMyFile(File f) {
if(f.isDirectory()){//是文件夹
if(f.getAbsolutePath().length()<5){//防护。防止将e盘删掉
return;
}
File files[]=f.listFiles();
if(files!=null&&files.length>0){

for (File ff:files) {//删除文件夹中的东西(包括子文件夹或者文件)
deleteMyFile(ff);
}

}
f.delete();//删除当前文件夹,先删里面的东西,再删除文件夹
}else{//是文件直接删
f.delete();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: