我正在實現一個ZipComparison
文件,該文件遍歷目錄樹結構,並處理該目錄樹結構中所有.zip
文件的MD5
。FilenameFilter不過濾zip文件 - Java
import java.io.*;
public class ZipComparison {
public class ZipFilenameFilter implements FilenameFilter {
public boolean accept(File dir, String name) {
if(name != null &&
(dir.isDirectory() || name.toLowerCase().endsWith(".zip"))) {
return true;
}
return false;
}
}
/**
* These two constant values are the root for the directory
*/
private static final String root_a = "D:/UDU/r/tc10.0.0.2012080100_A";
private static final String root_b = "D:/UDU/r/tc10.0.0.2012080100_B";
private ZipFilenameFilter filter;
public ZipComparison() {
this.filter = new ZipFilenameFilter();
}
public void matchMD5() {
try{
File root = new File(ZipComparison.root_a);
if(!root.exists()){
System.out.println("root doesn't exist");
}
else if(!root.isDirectory()) {
System.out.println("root isn't a directory");
}
else{
File[] files = new File(ZipComparison.root_a).listFiles(this.filter);
if(files != null){
showFiles(files);
}
else{
System.out.println("List of files was null.");
System.exit(-1);
}
}
}
catch(SecurityException ex){
ex.printStackTrace();
}
}
/**
* iterates over the directory tree structure.
* @param files
*/
public void showFiles(File[] files){
for(File file : files){
if(file.isDirectory()) {
System.out.println("Directory: " + file.getName());
showFiles(file.listFiles(this.filter));
}
else {
System.out.println("File: " + file.getName());
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ZipComparison zc = new ZipComparison();
zc.matchMD5();
System.exit(0);
}
}
當我沒有ZipFilenameFilter filter
執行程序它工作得很好。然而,當我加入filter
到
File[] files = new File(ZipComparison.root_a).listFiles(filter);
什麼是越來越打印出來。我錯過了什麼嗎?
看起來,它正在測試的目錄名結束與.zip文件? – 2012-08-17 15:19:38
@TylerHeiks我已經更新了我的問題,請看看。 – cybertextron 2012-08-17 15:31:53
@philippe請編輯代碼,以便它正確;因爲它有一個空的班級和一個班級。 – 2012-08-17 15:34:21