我正在尝试一个监视目录更改的程序。该计划必须说:
为此,我使用两个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{
}
}
}
我需要一些帮助来获取新文件和删除的文件。谢谢! :)
答案 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)