正在保存对Java ArrayLists上文件夹的更改



我正在尝试一个监视目录变化的程序。程序必须说明:

  1. 如果文件已删除
  2. 如果文件被修改
  3. 如果文件是新的

为此,我使用了两个ArrayList,在第一个ArrayList(initialist)中,我保存了FilePath的内容。然后我停顿了一下。用户可以从FilePath更改某些内容,如插入新文件,或删除其他文件或修改。当我按键时,我会再次将FilePath的内容保存在第二个ArrayList中。

然后我比较这些项目,问题就在这里。我怎么能与之相比呢?

我用的是:

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{
            }
        }
    }

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

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

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

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

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

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

更改

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

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

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

使用WatchService 监控文件系统

这将为你节省很多额外的工作。

最新更新