我想返回列出目录和子目录中所有文件的递归方法的值。目标是创建一个md5文件值的HashSet。递归方法的返回文件值
目前的代码工作正常,但只是在根目录,而不是在递归。
static Set<String> localMd5Listing() throws Exception {
List<String> localMd5List = new ArrayList<String>();
if(!baseModDirectoryFile.exists()){
System.out.println("baseModDirectory doesn't exist, check your baseModDirectory variable.");
}
else{
if(baseModDirectoryFile.isDirectory()){
File[] paths = baseModDirectoryFile.listFiles();
if(paths != null){
for(File path:paths){
if(path.isFile()){
FileInputStream fis = new FileInputStream(path);
String md5 = org.apache.commons.codec.digest.DigestUtils.md5Hex(fis);
fis.close();
localMd5List.add(md5);
}
else if(path.isDirectory()){
listChildren(path);
//Check md5 for children files as path.isFile condition
}
}
}
}
}
Set<String> localSet = new HashSet<String>();
localSet.addAll(localMd5List);
localMd5List.clear();
localMd5List.addAll(localSet);
return localSet;
}
listChildren递归结果的方法:
public static void listChildren(File dir) throws IOException{
File[] files = dir.listFiles();
for(File file:files){
if(file.isDirectory()){
listChildren(file);
}
else{
//Return file variable to use them in localMd5Listing()
}
}
}
Unfortuntely我不知道如何将2种方法链接到localMd5Listing返回()listChildren的值()。我认为这不是在第一种方法中使用listFile()的好方法。
谢谢!
我没想过用2个初始变量File和List创建方法,谢谢你的工作正常! ;)任何想法比较这个最终的HashSet到另一个,并删除链接到哈希不包含在第二个HashSet中的文件?再次感谢你 ! –
mickaelb91
最后我到了用像你的例子那样的recurseDelete方法来删除文件。谢谢 ! – mickaelb91