gpt4 book ai didi

用于匹配搜索间隔的 Java 文件名过滤器

转载 作者:太空宇宙 更新时间:2023-11-04 14:10:14 25 4
gpt4 key购买 nike

我试图在问题历史记录中找到问题的答案,但找不到。这就是我的问题。

让我们想象一下 a 有这样的目录结构:

project
| -- 20150201
| -- 20150202
| | -- 1423500700241.xml
| | -- 1423500720009.xml
| | -- 1423500760005.xml
| -- 20150203
| | -- 1423500780006.xml
| | -- 1423500800006.xml
| -- 20150204
| | -- 1423500820005.xml
| | -- 1423500840008.xml
| -- report

我想要的是,从用户选择的日期期间开始,我处理目录内的文件;

示例:

当用户搜索 20150201 到 20150203 时,我需要处理目录内的文件。

到目前为止我已经这样做了:

public class FileFilterDateIntervalUtil implements Serializable, FilenameFilter {
private static final long serialVersionUID = 226591338838691089L;

private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");

private String initialDate;
private String endingDate;

public FileFilterDateIntervalUtil(String initialDate, String endingDate) {
this.initialDate = initialDate;
this.endingDate = endingDate;
}

@Override
public boolean accept(File dir, String name) {
String currentDate = DATE_FORMAT.format(new Date(new File(dir, name).lastModified()));

return ( (this.initialDate.compareTo(currentDate) < 0) && (this.endingDate.compareTo(currentDate) >= 0) );
}
}

但是当我这样做时,我搜索最后修改的文件,这不是我想要的,我想按日期间隔按目录名称搜索。

有人可以帮助我吗?

谢谢。

最佳答案

问题似乎出在您实现接受方法的方式上。您应该单独使用目录名称来实现您的目标,而不是使用目录的上次修改日期和当前日期。

        @Override
public boolean accept(File dir, String name) {
Date dirDate = null;
try {
dirDate = DATE_FORMAT.parse(name.trim());
} catch(Exception e) {
System.out.println("Cannot parse date "+name+" reason "+e.getMessage());
return false;
}

String dirDateStr = DATE_FORMAT.format(dirDate);

return initialDate.compareTo(dirDateStr) * dirDateStr.compareTo(endingDate) > 0;
}

上述accept方法可用于获取起始日期和结束日期之间的所有文件列表(不包括起始日期和结束日期)。

关于用于匹配搜索间隔的 Java 文件名过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28415569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com