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

标签 java file

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

让我们想象一下 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/

相关文章:

java - Java 应用程序运行时验证的 ssl 证书抛出异常

java - 如何使用自签名证书连接到 Android(paho 客户端)中的 Mqtt 服务器?

JavaFX 2路径绘制性能

c - C 中 main() 执行一半后输出消失

java - 在 C++ 和 Java 中使用 map

Java错误?为什么在 utf8 编码中额外的零字节?

java - 如何更新传递给方法的变量?

c# - 仅可在只写模式下请求追加访问

python - 在 Python 中按创建日期排序文件列表时出现奇怪的错误

java - RandomAccessFile 长度多久更新一次?