列出在java中运行程序之前已修改的文件

时间:2013-05-31 06:24:55

标签: java

我有一个代码可以列出目录中最新修改的文​​件。以下是我的代码:

//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个文件并运行程序时,它只能显示具有最新修改时间的文件。 我的问题是:如何在运行程序之前列出所有已修改的文件?

2 个答案:

答案 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)启动变量名称。