用于匹配目录和文件的 Java Globbing 模式

标签 java scala glob

我正在使用递归函数遍历根目录下的文件。我只想提取 *.txt 文件,但我不想排除目录。现在我的代码如下所示:

val stream = Files.newDirectoryStream(head, "*.txt")

但是这样做,它不会匹配任何目录,并且返回的 iterator()False。我使用的是 Mac,所以我不想包含的噪音文件是 .DS_STORE。如何让 newDirectoryStream 获取 *.txt 的目录和文件?有办法吗?

最佳答案

你真的应该使用 FileVisistor,它使代码如此简单:

import java.nio.file.attribute.BasicFileAttributes
import java.nio.file._

import scala.collection.mutable.ArrayBuffer

val files = ArrayBuffer.empty[Path]

val root = Paths.get("/path/to/your/directory")

Files.walkFileTree(root, new SimpleFileVisitor[Path] {
  override def visitFile(file: Path, attrs: BasicFileAttributes) = {
    if (file.getFileName.toString.endsWith(".txt")) {
      files += file
    }
    FileVisitResult.CONTINUE
  }
})

files.foreach(println)

关于用于匹配目录和文件的 Java Globbing 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25249424/

相关文章:

java - 在javafx中移动形状?

Java jvm 无故崩溃 - 以管理员权限运行

scala - 如何将Some ("")转换为单行的None?

windows - winutils spark windows 安装 env_variable

scala - 合并目录中的所有文件并根据第一列进行排序

node.js - 用于从另一个文件夹中的特定文件夹复制文件的通配模式

java - Java 中使用客户端证书公钥进行 RSA 算法 PKCS #1.5 填充(不是 OEAP)密码加密

Java - 此代码中的初始化顺序是什么?

linux - 文件名和文件通配

javascript - 将 Gulp glob 链接到 browserify 转换