【问题标题】:Scala : List the files which are greater than a file based on its name with timestamp pattern in itScala:根据文件名列出大于文件的文件,其中包含时间戳模式
【发布时间】:2020-08-10 12:55:58
【问题描述】:

我必须根据 scala 中命名模式中的时间戳列出所有大于特定文件的文件。下面是例子。

可用文件:

log_20200601T123421.log
log_20200601T153432.log
log_20200705T093425.log
log_20200803T049383.log

条件文件:

log_20200601T123421.log - 我需要列出其名称中大于等于 20200601T123421 的所有文件名。结果是,

输出列表:

log_20200601T153432.log
log_20200705T093425.log
log_20200803T049383.log

如何在 scala 中实现这一点?我正在尝试使用 apache common,但我看不到大于等于 NameFileFilter 。

【问题讨论】:

  • 你试过什么?你遇到了什么问题?

标签: scala fileutils


【解决方案1】:

也许下面的代码 sn-p 可以作为一个起点:

import java.io.File

def getListOfFiles(dir: File):List[File] = dir.listFiles.filter(x => x.getName > "log_20200601T123421.log").toList

val files = getListOfFiles(new File("/tmp"))

对于从不同子目录收集文件的扩展任务:

import java.io.File

def recursiveListFiles(f: File): Array[File] = {
  val these = f.listFiles
  these ++ these.filter(_.isDirectory).flatMap(recursiveListFiles) 
}

val files = recursiveListFiles(new File("/tmp")).filter(x => x.getName > "log_20200601T123421.log")

【讨论】:

  • 感谢@Twistleton 的回复,我的错,没有提到,这些文件将位于不同的目录中,如下所示。目录:/tmp/log/20200601/log_20200601T123421.log log_20200601T153432.log 目录:/tmp/log/20200705/log_20200705T093425.log 目录:/tmp/log/20200803/log_20200803T04938日志目录下的多个目录(子目录)。谢谢..
猜你喜欢
  • 1970-01-01
  • 2014-07-17
  • 1970-01-01
  • 2011-08-20
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
相关资源
最近更新 更多