我的目录中存在格式为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;
}
}
我们如何以编程方式不断重新定义搜索?
答案 0 :(得分:0)
获取文件列表的最佳方法是使用File.listFiles(),并且文档说明无法保证返回的文件的顺序。因此,您需要编写一个使用File.lastModified()的Comparator,并将其与文件数组一起传递给Arrays.sort()。
File [] files = directory.listFiles();
Arrays.sort(files,new Comparator(){
public int compare(File file1, File file2) { return Long.valueOf(file1.lastModified()).compareTo(file2.lastModified()); }
});
获得文件列表后,只获取数组中的前10个元素。