我有一个代码可以列出目录中最新修改的文件。以下是我的代码:
//store the file to the list
List<File> list = new ArrayList<File>(Arrays.asList(store));
//combine all the file at main folder and sub folder
Object[] combine = list.toArray();
//sort the file according to the date
Arrays.sort(combine, new Comparator<Object>(){
public int compare(Object o1, Object o2){
return compare((File)o1, (File)o2);
}
public int compare( File f1, File f2){
long StartTime = f2.lastModified() - f1.lastModified();
if( StartTime > 0 ){
return 1;
}else if( StartTime < 0 ){
return -1;
}else {
return 0;
}
}
});
//get the file name that has latest modified date
files = ((File) combine[0]).getName();
//get the file date that has latest modified date
lastModifiedDate = new java.util.Date(((File)combine[0]).lastModified()).toString();
System.out.println("The latest modified file is : "+files);
System.out.println("The time for the latest modified's file is :");
System.out.println(lastModifiedDate);
当我修改目录中的文件并运行程序时,它可以列出我修改过的文件。但是当我在目录中修改了超过1个文件并运行程序时,它只能显示具有最新修改时间的文件。 我的问题是:如何在运行程序之前列出所有已修改的文件?
答案 0 :(得分:3)
如果这是您将重复运行的应用程序,要列出自上次运行应用程序以来修改过的所有文件,请将应用程序的上次运行时间存储在其他位置的文件中(例如“lastrun.txt”)。
然后在启动时,检索此时间戳(来自“lastrun.txt”)并将其与目录中每个文件的修改时间戳进行比较。
答案 1 :(得分:0)
如果您只想要在启动程序之前修改过的文件,请尝试以下操作:
//store the file to the list
List<File> list = new ArrayList<File>(Arrays.asList(store));
//Here we will store our selected files
ArrayList<File> modifiedBefore = new ArrayList<File>();
for (int i = 0; i<list.size(); i++) {
File f = (File)list.get(i); //get files one by one
if (f.lastModified() < StartTime) modifiedBefore.add(f); //store if modified before StartTime
}
System.out.println("The files modified before this program start are : ");
for (int i = 0; i < modifiedBefore.size(); i++)
System.out.println(modifiedBefore.get(i).getName());
注意:您应该使用小写(StartTime =&gt; startTime)启动变量名称。