资源描述
垃圾文件清理
一 引言
1设计目的
现在电脑使用频率越来越高,人们都用电脑上网,浏览网页,看视频等等,但同时也产生许多垃圾文件于电脑中,这时候自己编写一个垃圾文件清理的程序可以一劳永逸,并且锻炼了自己运用java的编程能力。
2运行环境
1.Windows7下Vmware Workstation 8.0安装Window XP
2.Eclipse helios
二 系统设计
1知识要点
1) Java.io包的主要成分是几个类,它们是InputStream类、OutputStream类、File类、RandomAccessFile类和FileDescriptor类。
数据输入流的类层次结构
2)Java将流操作中常见的异常也定义为类的形式,主要有EOFException类、FileNotFoundException类、IOException类和InterruptedIOException类
数据输出流的类层次结构
3)Date类位于java.util包中,通过它可以获取时、分、秒方面的信息。
4)垃圾文件后缀名:"log","tmp", "_mp", "gid", "chk", "old", "dmp", "bak", "hlp", "temp", "internet"
2系统功能设计流程图:
获取文件夹下所有的文件
扫描子目录文件
截取文件夹后缀名
否
文件是否属于黑名单范畴
是
是
时间差计算
子文件夹个数
扫描个数
删除个数
删除结果详细
删除结果分类
三 系统实现
package com.datatransfer;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import javax.swing.JFileChooser;
public class test {
static String[] SYSARRAY = { "log","tmp", "_mp", "gid", "chk", "old",
"dmp", "bak", "hlp", "temp", "internet" };
static HashMap<String,Integer> map = new HashMap<String,Integer>(); //删除结果分类
static StringBuffer sb = new StringBuffer(); //删除结果详细
static long count = 0; //删除个数
static long scanCount = 0; //扫描个数
static long node = 0; //子文件夹
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
test t = new test();
java.util.Date now = new Date();
t.listFile("E:\\");
java.util.Date date=new Date();
TDoA(date,now);
System.err.println("共扫描 :" + scanCount + "个文件");
System.err.println("共删除了 :" + count + "个文件");
for (String str : SYSARRAY) {
System.err.println("共删除【"+str+"】类型垃圾文件 :"+map.get(str)+"个");
}
System.err.println("=====================详细信息=====================");
System.err.println(sb.toString());
}
/**
* 获取文件夹下的所有文件
*/
public void listFile(String pash) { File f = new File(pash);
File[] array = f.listFiles();
//JFileChooser j = new JFileChooser();
for (File file : array) {
if (file.isDirectory()) {
this.File(file);
} else {
System.out.println("扫描文件:" + file.getPath());
if (trimExtension(file.getName())) {
// System.err.println("删除 :"+file.getPath());
file.delete();
count++;
sb.append("删除了:" + file.getPath());
sb.append("/n");
}
// System.err.println(j.getTypeDescription(file));
}
}
}
/**
* 扫描子目录 文件
* @param f
*/
public void File(File f) { //一个经典的递归调用
File[] array = f.listFiles();
//JFileChooser j = new JFileChooser();
if (null != array) {
for (File file : array) {
if (file.isDirectory()) {
this.File(file);
} else {
// System.err.println(file.getName());
// System.err.println(j.getTypeDescription(file));
System.out.println("扫描文件:" + file.getPath());
if (trimExtension(file.getName())) {
// System.err.println("删除 :"+file.getPath());
file.delete();
count++;
sb.append("成功删除了:" + file.getPath());
sb.append("\n");
}
}
}
}
}
/**
* 截取文件名的后缀名
* @param filename
* @return
*/
public static boolean trimExtension(String filename) {
scanCount++;
boolean fig = false;
if ((filename != null) && (filename.length() > 0)) {
int i = filename.lastIndexOf('.');
if ((i > -1) && (i < (filename.length()))) {
fig = isDelFile(filename.substring(i + 1, filename.length()));
} else {
return fig;
}
}
return fig;
}
/**
* 判断文件是否属于黑名单范畴
* @param name
* @return
*/
public static boolean isDelFile(String name) {
for (String nodename : SYSARRAY) {
if (nodename.equals(name)) {
if(null!=map.get(nodename)){
map.put(nodename,map.get(nodename)+1);
}else{
map.put(nodename,1);
}
return true;
}
}
return false;
}
/**
* 时间差计算
* @param now
* @param date
*/
public static void TDoA(Date now ,Date date){
long l=now.getTime()-date.getTime();
long day=l/(24*60*60*1000);
long hour=(l/(60*60*1000)-day*24); long min=((l/(60*1000))-day*24*60-hour*60);
long s=(l/1000-day*24*60*60-hour*60*60-min*60);
System.out.println("历时:"+day+"天"+hour+"小时"+min+"分"+s+"秒");
}
}
运行的界面:
四 结束语
在这次报告中,是对面向对象程序设计这门课程和编程方法的一个总结,回顾和实践。Java语言是对面对象的,在实践的过程中,更好的巩固所学的《java简明教程(第三版)》的课程知识。并学会利用收集获取信息的手段进一步学习相关知识,以解决实际操作中遇到的技术难点,从而提高了自学的能力。
在编写垃圾文件清理过程中,运用到了java中的输入和输出处理,理解流的层次结构,掌握输入输出流、数据输入输出流、文件输入输出及其常见的使用办法。在编写其过程中,思路要清晰,关键在于如何找到垃圾文件。首先要知道垃圾文件的后缀名,然后要在文件中搜索查找,文件还包括子文件,子目录。还有特殊的文件是否属于黑名单范畴等考虑问题要全面。
参考文献:
[1] 皮常德.《java简明教程(第三版)》.清华大学出版社 2011年2月第3版
[2] Bruce Eckel.Java编程思想。候捷译。北京:机械工业出版社,2002
9
展开阅读全文