我正在使用递归函数遍历根目录下的文件。我只想提取 *.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/