java - 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) );
    }
}


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

有人可以帮我吗?

谢谢。

最佳答案

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

        @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 - Java文件名过滤器以匹配搜索间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28415569/

相关文章:

java - DBCP Tomcat 连接池 removeAbandoned 不起作用

java - 使用super()或对象访问父类中的变量?

java - 删除文本文件中的多余行

java - Java:使用vlcj的rtsp流到文件

java - 用于 xml 解码的 JAXB 或 Jackson?

java - Java在内存分配期间使用多个线程

java - 将int传递给Object参数

Java - 从文本文件中读取对象

Java 读取文件——找不到文件/目录

python - 如何在文件中打印一定长度的行(Python)