【问题标题】:Read Specific Date File using AgeFileFilter使用 AgeFileFilter 读取特定日期文件
【发布时间】:2019-02-14 21:55:30
【问题描述】:

如何使用 AgeFileFilter 读取特定日期文件? 我在属性文件中声明了特定日期。 我试着用

FileFilter fileFilter = new AgeFileFilter(cutoffDate, false);  

它给了我更新的文件

FileFilter fileFilter = new AgeFileFilter(cutoffDate, true);  

它给了我相同日期的文件

但是他们两个都没有按照我的要求工作然后我也尝试了

FileFilter fileFilter = new AgeFileFilter(long cutoffDate);  

但它给了我具有相同日期文件的旧文件
我的要求是只读取或显示特定的日期文件..
那怎么可能呢? 任何帮助将不胜感激..提前谢谢您

【问题讨论】:

  • 这条线是什么意思FileFilter fileFilter = new AgeFileFilter(long cutoffDate);?它不是有效的 Java,您不能通过 long cutOffDate
  • @jbx commons.apache.org/proper/commons-io/javadocs/api-2.5/org/… 浏览这个 ....并注意 AgeFileFilter(long cutoff) 及其描述
  • 描述清楚。它会为您提供早于指定截止时间或比指定截止时间更新的文件。不是与截止时间完全匹配的文件。 long 参数是以毫秒为单位的时间戳,而不仅仅是日期,因此完全匹配没有意义。您可以在代码中确认:github.com/apache/commons-io/blob/master/src/main/java/org/…

标签: java file apache-commons-io filefilter


【解决方案1】:

AgeFileFilter 仅过滤截止日期时间实例之前或之后的文件。

请记住,cutOffDate 参数是以毫秒为单位的 unix 日期时间 您会以毫秒为单位知道确切的日期和时间并将其保存在您的属性文件中吗?

如果是(不太可能),您为什么不简单地编写自己的FileFilter?它只是一个方法,而使用 Java 8,您可以像这样轻松编写它:

long cutOffDate = 1536584743813L;

FileFilter fileFilter = file -> file.lastModified() == cutOffDate;

我怀疑这不太可能是您想要的。您是否仅从属性文件中加载日期(没有时间)?

那么您可能希望从上次修改的时间戳中获取文件的日期。

以下仅接受今天修改过的文件。您可以从属性文件中加载任何 LocalDate,而不是 today

LocalDate today = LocalDate.now();

FileFilter fileFilter = file -> LocalDate.from(Instant.ofEpochMilli(file.lastModified())).isEqual(today);

【讨论】:

  • 是的,在属性文件中我只声明日期...不是时间
  • 因此,以您在属性文件中的任何格式解析日期,以获取 LocalDate 实例并使用我给您的第二个示例。
猜你喜欢
  • 1970-01-01
  • 2020-01-16
  • 2014-08-19
  • 2021-04-19
  • 1970-01-01
  • 2013-10-04
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
相关资源
最近更新 更多