Java Globbing模式匹配目录和文件

win*_*ler 2 java scala glob

我正在使用递归函数遍历根目录下的文件.我只想提取*.txt文件,但我不想排除目录.现在我的代码看起来像这样:

val stream = Files.newDirectoryStream(head, "*.txt")
Run Code Online (Sandbox Code Playgroud)

但是通过这样做,它将不匹配任何目录,并且iterator()返回的是False.我正在使用Mac,因此我不想包含的噪音文件是.DS_STORE.我怎样才能newDirectoryStream获取目录和文件*.txt?有办法吗?

Vla*_*eev 5

你真的应该使用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)
Run Code Online (Sandbox Code Playgroud)