2011-12-24 203 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