1

ディレクトリ内の最新の変更されたファイルを一覧表示できるコードがあります。以下は私のコードです:

//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);

ディレクトリ内のファイルを変更してプログラムを実行すると、変更されたファイルが一覧表示されます。しかし、ディレクトリ内の複数のファイルを変更してプログラムを実行すると、最新の変更時刻を持つファイルしか表示できません。私の質問は次のとおりです。プログラムを実行する前に、変更されたすべてのファイルを一覧表示するにはどうすればよいですか?

4

2 に答える 2

3

これが繰り返し実行するアプリケーションである場合、アプリケーションが最後に実行されてから変更されたすべてのファイルを一覧表示するには、アプリケーションの最終実行時刻を別のファイル (例: "lastrun.txt") に保存します。

次に、起動時にこのタイムスタンプを (「lastrun.txt」から) 取得し、ディレクトリ内のすべてのファイルの変更されたタイムスタンプと比較します。

于 2013-05-31T06:32:50.820 に答える
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 => startTime)。

于 2013-05-31T06:34:56.443 に答える