|
参照网上流传很广泛的windows垃圾文件处理的批处理文件,写了这个java版的windows垃圾文件清理。
由于记录日志用到了log4j,所以,需要引入log4j类库,还需要log4j.properties文件。
package windows.clear;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
/**
* 清理系统垃圾文件
* @author Billows.Van
* @version 2009-03-15<br>
* 主页: http://haidii.javaeye.com<br>
* Email:fanht@126.com
*
*/
ClearSystem.java:
public class ClearSystem{
private static final Logger log = Logger.getLogger("Test");
private static int mount_s=0;
private static int mount_f=0;
public static void main(String[] args) {
log.info("开始删除垃圾文件");
List<String> fileEnd=new ArrayList<String>();
fileEnd.add(".tmp");
fileEnd.add("._mp");
fileEnd.add(".log");
fileEnd.add(".gid");
fileEnd.add(".chk");
fileEnd.add(".old");
deleteFile(System.getenv("systemdrive"),fileEnd);
deleteFile(System.getenv("systemdrive")+"/recycler/",null);//ntfs是recycler,fat是recycled
fileEnd.clear();
fileEnd.add(".bak");
deleteFile(System.getenv("windir"),fileEnd);
deleteFile(System.getenv("windir")+"/prefetch/",null);
deleteFile(System.getenv("windir")+"/temp/",null);
deleteFile(System.getProperty("user.home")+"/cookies/",null);
deleteFile(System.getProperty("user.home")+"/recent/",null);
deleteFile(System.getProperty("user.home")+"/Local Settings/Temporary Internet Files/",null);
deleteFile(System.getProperty("user.home")+"/Local Settings/Temp/",null);
log.info("清理完成。成功删除:"+mount_s+" 个文件和文件夹。失败:"+mount_f);
}
//删除文件夹内指定文件
private static void deleteFile(String fileDir,List<String> fileEnd){
File f=new File(fileDir);
if(!f.exists()){
log.info(f.getAbsoluteFile()+"不存在!");
return;
}
File[] allFiles=f.listFiles();
for(File tmp:allFiles){
if(fileEnd!=null){
for(String str:fileEnd){
if(tmp.getName().endsWith(str)){
deleteFileAndLog(tmp);
}
}
}else{
deleteAll(tmp.getAbsolutePath());
}
}
}
//删除指定目录下的所有文件和文件夹
private static void deleteAll(String dir){
File f=new File(dir);
if(!f.exists())
return;
else{
if(f.isFile()){
deleteFileAndLog(f);
}else if(f.isDirectory()){
for(File tmp:f.listFiles()){
deleteAll(tmp.getAbsolutePath());
}
deleteFileAndLog(f);
}
}
}
//删除文件并记录日志
private static void deleteFileAndLog(File f){
try{
f.delete();
mount_s++;
log.info("删除文件夹:"+f.getAbsolutePath()+" 成功。");
}catch(Exception e){
mount_f++;
log.info("删除文件夹:"+f.getAbsolutePath()+" 失败。原因:"+e);
}
}
} |
|