从HashSet中的md5列表中删除文件

时间:2013-11-20 02:29:22

标签: java file path md5 hashset

我想删除位于本地计算机上的文件,与服务器计算机进行比较。

我的例子:

import java.io.*;

public static void main(String[] args) throws Exception {


        Set<String > lmd5 = new HashSet<String>();
            lmd5.add("4be1babb2f8cac64d96f8052c0942130");
            lmd5.add("a7514d56f233a434c7066176933d708d");
            lmd5.add("d41d8cd98f00b204e9800998ecf8427e");
            lmd5.add("674e3b94be9ed5db8bafe75808385de1");
        Set<String > dmd5 = new HashSet<String>();
            dmd5.add("4be1babb2f8cac64d96f8052c0942130");
            dmd5.add("a7514d56f233a434c7066176933d708d");
            dmd5.add("d41d8cd98f00b204e9800998ecf8427e");

        if(lmd5.equals(dmd5)){
            System.out.println("OK");
        }
        else{
            lmd5.removeAll(dmd5);

            System.out.println("Obsoletes Files To Delete : " + lmd5);

            File[] paths = baseModDirectoryFile.listFiles();
            for(File path:paths){
                FileInputStream fis = new FileInputStream(path);
            String md5 = org.apache.commons.codec.digest.DigestUtils.md5Hex(fis);
                if(lmd5.contains(md5) ){
                    File foundFile = path;
                    System.out.println("Obsolete File Found !");
                    try{
                        if(foundFile.delete()){
                            System.out.println("Obsolete File Deleted !");
                        }
                        else{
                            System.out.println("Obsolete File Not Deleted : Error !");
                        }
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
                else{
                    continue;
                }
            }
        }

}

在我的输出控制台中,出现了“找不到找到的文件”消息,但之后我收到消息:“过时的文件未删除”。我相信我在删除文件的功能中来得太晚,因为所有文件都已经过检查。

也许我必须审查这个职位,但我想得到一些建议。

谢谢!

1 个答案:

答案 0 :(得分:3)

foundFile.delete()的价值是什么?

您是否有足够的权限删除文件?

您的文件可能被FileInputStream锁定了吗?