2011-12-24 9 views

答えて

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

今のところ、Javaライブラリを使用してください。

13

Javaファイルクラスは本当に必要なものですが、ディレクトリの繰り返し処理にScalaの優れた点を追加するのは簡単です。

import scala.collection.JavaConversions._ 

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

私は2つの小さなタイプミスを編集しようとしましたが、それは2文字なので、それはできません。パッケージの名前は 'collection'で、' for'に閉じ括弧がありません。 – Eduardo

15

JDK7のバージョン、新しいDirectoryStreamクラスを使用すると、次のとおりです。

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

文字列の代わりに、これは '「相対化」のように、上の便利な方法の負荷を持ってパスを返し、サブパス '。

Javaコレクションとの相互運用を可能にするには、import scala.collection.JavaConversions._をインポートする必要があります。

+0

+1 for java.nio – jasonoriordan

+1

これは以前のバージョンでは機能していたのかどうか分かりませんが、今は 'value mapはjava.nio.file.DirectoryStream [java.nio.file。 Path]] – rumtscho

+0

Java 8を使用して同じエラーが発生する –

関連する問題