2011-12-24 132 views

回答

44
new java.io.File(dirName).listFiles.filter(_.getName.endsWith(".txt")) 
2

现在,您应该使用Java库来执行此操作。

13

Java File类真的是你所需要的,虽然它很容易添加一些Scala的好处,更容易迭代目录。

import scala.collection.JavaConversions._ 

for(file <- myDirectory.listFiles if file.getName endsWith ".txt"){ 
    // process the file 
} 
+1

我试图编辑两个小错别字,但由于它只是两个字符,它不会让我。包的名称是'collection',并且在'for'中缺少右括号。 – Eduardo 2013-02-01 19:26:05

15

的JDK7版本,使用新DirectoryStream类:

import java.nio.file.{Files, Path} 
Files.newDirectoryStream(path) 
    .filter(_.getFileName.toString.endsWith(".txt")) 
    .map(_.toAbsolutePath) 

,而不是字符串,这将返回一个路径,这有它的便利方法负荷,如“相对化”和“子路径”。

请注意,您还需要导入import scala.collection.JavaConversions._以启用Java集合的互操作。

+0

使用java.nio的+1 – jasonoriordan 2014-11-02 12:38:36

+1

我不知道这是否适用于以前的版本,但是现在我得到错误'value map不是java.nio.file.DirectoryStream [java.nio.file。路径]' – rumtscho 2015-04-25 13:11:29

+0

我得到了同样的错误使用Java 8 – 2015-05-17 22:24:07