保存Java ArrayLists上文件夹的更改

时间:2013-12-08 17:08:03

标签: java arraylist compare compareto

我正在尝试一个监视目录更改的程序。该计划必须说:

  1. 如果文件已删除
  2. 如果文件已修改
  3. 如果文件是新的。
  4. 为此,我使用两个ArrayLists,在第一个ArrayList(初始列表)中我保存了FilePath的内容。然后我暂停一下。用户可以从FilePath更改内容,例如插入新文件,或删除其他文件或修改。当我按下一个键时,我再次在第二个ArrayList中保存FilePath的内容。

    然后我比较项目,这是问题所在。 我该如何比较呢?

    我用它:

    for(int i=0; i<initiallist.size(); i++){
            for(int j=0; j<finallist.size(); j++){
                int compname = initiallist.get(i).getName().compareTo(finallist.get(j).getName());
                //If name is the same
                if(compname==0){
                    //If modify date and length is the same
                    if(initiallist.get(i).getLength()==finallist.get(i).getLength() && initiallist.get(i).getDate()==finallist.get(i).getDate()){
                        System.out.println("The file: "+initiallist.get(i).getName()+ " --> wasn't modified." );
                        break;
                    }else{
                        System.out.println("The file: "+initiallist.get(i).getName()+ " --> was modified." );
                    }
                }else if(compname!=0){
    
                }else{
    
                }
            }
        }
    

    我需要一些帮助来获取新文件和删除的文件。谢谢! :)

3 个答案:

答案 0 :(得分:1)

==比较是仅适用于基本类型的比较。为了比较对象,例如Date对象,必须使用equals()或compareTo()

==比较两个对象的ADDRESS,而不是对象的实际值。

if(date1.equals(date2))
    //do something

OR

if(date1.compareTo(date2) == 0)
    //do something

答案 1 :(得分:0)

要比较java中的对象,请使用.equals()方法而不是“==”运算符

更改

initiallist.get(i).getDate()==finallist.get(i).getDate()

initiallist.get(i).getDate().equals(finallist.get(i).getDate())

答案 2 :(得分:0)

如果您使用的是Java 7,则还可以使用内置支持来监视文件系统

Monitor File System with WatchService

它将为您节省大量额外的工作。