IO流笔记第七发文件夹目录显示及统计和各级文件删除(用到了DFS搜索)
2016-03-07 19:37
204 查看
一、文件目录显示(加强版)在第六发中的文件目录查询的基础上,进一步加强了性能,用来统计文件夹、文件、字节大小。基本思路还是和上一个简单的文件目录查询相似,但是用到了getAbsolutePath()方法来获得文件的路径。用for循环来查找files数组中的文件,如果是文件夹就递归count()方法。否则就输出此时文件的属性。
效果图如下:
实现代码如下:
二、文件的删除 之前也提到过要删除文件夹我们只能删除空的文件夹,即我们要先删除文件夹中的文件,再来删除这个空的文件夹。所以我们这里用for循环和递归来删除文件夹中的文件,当里面的文件删除后跳出这一次的递归就能删掉当前文件夹。为了防止程序将系统的e盘删掉我们用if来做一个防护,即if(f.getAbsolutePath().length()<5){return;}这样就可以防止删掉e盘了。其他盘下的同理即可。
实现代码如下:
效果图如下:
实现代码如下:
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(); } } }
相关文章推荐
- 蓝桥基础练习——十六进制转十进制
- http状态码分类
- Kernel 2.4.0 之 head.S 为何用两次 jmp 刷新 EIP 寄存器
- matlab使用
- 从阿里巴巴笔试试题看数据分析师的职业要求
- [LeetCode]2 两个数相加
- Https学习
- 作业明天做
- MKNetworkKit介绍以及使用
- 深入浅出 React Native:使用 JavaScript 构建原生应用
- UGUI 全方位了解
- 病毒实验五
- 作业2
- Activity被回收导致fragment的getActivity为null的解决办法
- poj 3608:Bridge Across Islands
- ubuntu操作系统安装(二) vim
- ubuntu操作系统安装
- python模块之 - logging
- Android中自己定义组件和它的属性
- 病毒实验四