源码文件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;
}
}