0

ディレクトリに次の形式のファイルがありますddMMyyyyhhmmss(例: 190420120533481146Wj.jpeg)。このディレクトリから最新の 10 個のファイルのみを選択しようとしています。

1904201212ご覧のとおり、現在の日付の部分文字列 ( ) を使用してファイル名を検索しています。

例えば ​​:

Actual Date :19042012121306
Subs value :190420121213

以下のプログラムでわかるように、現在の日付の分の値で検索を開始しています。現在の日付の分の値のファイルがない場合は、

  • 検索を現在の日時の値に再定義したいのですが、そうでない場合は
  • さらに現在の日付値に再定義したいのですが、見つからない場合は、
  • そのような前日に再定義します。

public class Raa {

    public static void main(String args[])
    {
        File myDir = new File("C:\\");
        String res = new Raa().getTime();

        System.out.println(res);


        String substring = res.substring(0,12);
        System.out.println(substring);

        FilenameFilter select = new FileListFilter(substring);

        File[] contents = myDir.listFiles(select);

        for (File file : contents) {
        System.out.println(file.getName());
          }
         }

    public String getTime()
    {
        SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyyhhmmss");
        Date curDate = new Date();
        String strDate = sdf.format(curDate);
        return strDate;

    }
}

検索をプログラム的に継続的に再定義するにはどうすればよいでしょうか?

4

1 に答える 1

0

ファイルのリストを取得する最善の方法は、File.listFiles() を使用することです。ドキュメントには、返されるファイルの順序に関する保証はないと記載されています。したがって、File.lastModified() を使用する Comparator を作成し、これをファイルの配列と共に Arrays.sort() に渡す必要があります。

File[] ファイル = directory.listFiles();

Arrays.sort(files, new Comparator(){

public int compare(File file1, File file2)
{
    return Long.valueOf(file1.lastModified()).compareTo(file2.lastModified());
} 

});

ファイルのリストを取得したら、配列の最初の 10 要素のみをフェッチします。

于 2012-04-19T07:49:28.940 に答える