文件删除器(三)

源码文件Worker.java:
package com.teleca.robin;

import java.io.File;

import com.teleca.robin.lib.face.Console;
import com.teleca.robin.lib.util.SystemConsole;

public class Worker extends Thread {
private String folderRoot;
private String fileNamesArray[];
final Console console;
final static String kFileSlipRegex=",|;";
Worker (String folderRoot,String fileNames)
{
this(new SystemConsole(),folderRoot,fileNames);
}
Worker (Console console,String folderRoot,String fileNames)
{
this.console=console;
this.folderRoot=folderRoot;
if(fileNames!=null&&fileNames.length()>0)
fileNamesArray=fileNames.split(kFileSlipRegex);
else
fileNamesArray=null;
}
public void run ()
{
doDeletes();
}
int fileDeletedCnt=0;
int dirDeletedCnt=0;
void doDeletes(){
fileDeletedCnt=0;
dirDeletedCnt=0;
if(folderRoot!=null)
{
File root=new File(folderRoot);
if(root.exists())
{
printlnlog("start");
deleteFiles(root);
}
else
{
printlnlog("folder "+folderRoot+" do not exist");
}
}
printlnlog("delete success!");
printlnlog(dirDeletedCnt+"Directorys are deleted ");
printlnlog(fileDeletedCnt+"files are deleted ");
}
public void deleteFiles(File file){
if(file.isDirectory()){
File fileList[]=file.listFiles();
for(int i=0;i<fileList.length;i++) {
//printlnlog(fileList[i].getAbsolutePath());
if(isNeedDelete(fileList[i])){
if(fileList[i].isDirectory()){
deleteDir(fileList[i]);
dirDeletedCnt++;
} else
fileDeletedCnt++;
boolean ret=fileList[i].delete();
if(ret) {
printlnlog("delete dir "+fileList[i].getAbsolutePath()+" success");
} else
printlnlog("delete dir"+fileList[i].getAbsolutePath()+" failed");
} else
deleteFiles(fileList[i]);
}
} else if(isNeedDelete(file)) {
boolean ret=file.delete();
if(ret) {
printlnlog("delete "+file.getAbsolutePath()+"success");
} else
printlnlog("delete "+file.getAbsolutePath()+" failed");
}
}
public void deleteDir(File file){
if(file.isDirectory()) {
File fileList[]=file.listFiles();
for(int i=0;i<fileList.length;i++) {
//printlnlog(fileList[i].getAbsolutePath());
if(fileList[i].isDirectory()){
deleteDir(fileList[i]);
dirDeletedCnt++;
}else
fileDeletedCnt++;
boolean ret=fileList[i].delete();
if(ret) {
printlnlog("delete "+fileList[i].getAbsolutePath()+" success");
} else {
printlnlog("delete "+fileList[i].getAbsolutePath()+" failed");
}
}
}
}
void printlnlog(String str){
console.println(str);
}
void printlog(String str){
console.println(str);
}
public boolean isNeedDelete(File file){
if(fileNamesArray==null||fileNamesArray.length==0)
return true;
String strFileName=file.getName();
for(int i=0;i<fileNamesArray.length;i++) {
if(fileNamesArray[i]==null)
break;
if(fileNamesArray[i].equals(strFileName))
return true;
}
return false;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值