杀杀杀

这两天公司闹蠕虫,会在每个目录里放一个_desktop.ini文件。杀毒软件可以杀掉病毒,但是不会清除文件。今天自己机器也感染了,写了个小工具做这个清除工作,竟然删掉了十一万个残留文件 :? 。代码如下:
[code]
import java.io.File;
import java.io.FileFilter;

public class FileCleaner {
//file name to be deleted
private String fileName = null;
//deleted file number counter
private int counter = 0;

public FileCleaner(String fileName){
if(fileName == null || fileName.length() <= 0)
throw new IllegalArgumentException();

this.fileName = fileName;
}

/**
* entry method
*
* @param path directory to be processed
*/
public void cleanFile(String path){
File dir = new File(path);

if(!dir.isDirectory())
return;

processDir(dir);
}

/**
* returns the deleted file number
*
* @return
*/
public int getDeletedFileCount(){
return counter;
}

private void processDir(File tmp) {
System.out.println("Start to check " + tmp.getAbsolutePath());
File[] acceptedFiles = tmp.listFiles(new FileFilter(){
public boolean accept(File f){
if(f.isDirectory() || fileName.equals(f.getName()))
return true;
else
return false;
}
});

if(acceptedFiles != null && acceptedFiles.length > 0){
for(int n=0;n<acceptedFiles.length;n++){
if(acceptedFiles[n].isDirectory()){
processDir(acceptedFiles[n]);
}
else{
if(fileName.equals(acceptedFiles[n].getName())){
acceptedFiles[n].delete();
counter++;

System.out.println(tmp.getAbsolutePath() + "\\" + fileName + " is deleted!");
}
}
}
}
}

//----------------------------------------------------------

private static String help(){
StringBuffer help = new StringBuffer(128);

help.append("Delete all files with given name in the specified directory and its subdirectories. \n\n");
help.append("command [file name] [dir] [dir] [dir] \n\n");
help.append("For example: \n");
help.append(" java -jar FileCleaner.jar _desktop.ini c:/ d:/ e:/");


return help.toString();
}

public static void main(String[] args){
if(args == null || args.length <= 1){
System.err.println(help());
System.exit(0);
}

FileCleaner fc = new FileCleaner(args[0]);

for(int n=1;n<args.length;n++){
fc.cleanFile(args[n]);
}

System.out.println("Finish deleting " + args[0] + ", total " + fc.getDeletedFileCount() + " deleted!");
}
}
[/code]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值