package david.deepInCollection;
import java.util.Calendar;
public class SearchedFile implements Comparable<SearchedFile> {
private String _fileName;
private Calendar _lastModifed;
public SearchedFile(String fileName, Calendar lastModified) {
// TODO Auto-generated constructor stub
_fileName = fileName;
_lastModifed = Calendar.getInstance();
_lastModifed.setTimeInMillis(lastModified.getTimeInMillis());
}
@Override
public String toString() {
// TODO Auto-generated method stub
return String.format("{文件名:%s, 最后修改时间:%s}", _fileName, _lastModifed
.getTime().toString());
}
@Override
public int compareTo(SearchedFile o) {
// TODO Auto-generated method stub
if (o == null)
return -1;
return _lastModifed.compareTo(o._lastModifed) > 0 ? -1 : 1;
}
}
public static void searchFilesDemo() {
Calendar calendar = Calendar.getInstance();
calendar.set(2013, 0, 1, 0, 0, 0);
String filepath = "D:\\";
File file = new File(filepath);
Calendar lastmodifiedDate = Calendar.getInstance();
List<SearchedFile> searchedResult = new ArrayList<SearchedFile>();
for (File item : file.listFiles()) {
lastmodifiedDate.clear();
lastmodifiedDate.setTimeInMillis(item.lastModified());
if (lastmodifiedDate.compareTo(calendar) > 0) {
if (!item.isHidden()) {
SearchedFile sf = new SearchedFile(item.getName(),
lastmodifiedDate);
searchedResult.add(sf);
}
}
}
Collections.sort(searchedResult);
for (SearchedFile searchItem : searchedResult) {
System.out.println(searchItem.toString());
}
}
上述方法出来的特定时间下的文件输出没问题,但是如果把SearchFile的构造方法里面的换成
public SearchedFile(String fileName, Calendar lastModified) {
// TODO Auto-generated constructor stub
_fileName = fileName;
// _lastModifed = Calendar.getInstance();
// _lastModifed.setTimeInMillis(lastModified.getTimeInMillis());
_lastModifed = lastModified;
}
第一种正常结果是:
{文件名:Java, 最后修改时间:Tue Oct 15 00:05:34 CST 2013}
{文件名:360安全浏览器下载, 最后修改时间:Tue Oct 15 00:05:03 CST 2013}
第二种不正常结果是:
{文件名:飞速Tudou, 最后修改时间:Sun Jan 27 16:27:34 CST 2013}
{文件名:灌篮高手全国大赛, 最后修改时间:Sun Jan 27 16:27:34 CST 2013}
这样出来的结果所有的最后修改时间都变成了就是最后一个被添加的文件的时间了,是不是C#和Java在对象上的机制有什么不同才导致这样的问题...如果有知道的朋友求指导~谷歌没找到相应想要的答案~