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() 的比较器,并将其与文件数组一起传递给 Arrays.sort()。

文件[] 文件 = 目录.listFiles();

Arrays.sort(文件,新比较器(){

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

});

获得文件列表后,只需获取数组中的前 10 个元素。

于 2012-04-19T07:49:28.940 回答