我正在尝试一个监视目录变化的程序。程序必须说明:
- 如果文件已删除
- 如果文件被修改
- 如果文件是新的
为此,我使用了两个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 监控文件系统
这将为你节省很多额外的工作。