Reputation: 2791
How do I get the list of files (or all *.txt files for example) in a directory in Scala. The Source class does not seem to help.
Upvotes: 35
Views: 30310
Reputation: 2960
The JDK7 version, using the new DirectoryStream class is:
import java.nio.file.{Files, Path}
Files.newDirectoryStream(path)
.filter(_.getFileName.toString.endsWith(".txt"))
.map(_.toAbsolutePath)
Instead of a string, this returns a Path, which has loads of handy methods on it, like 'relativize' and 'subpath'.
Note that you will also need to import import scala.collection.JavaConversions._
to enable interop with Java collections.
Upvotes: 16
Reputation: 20515
The Java File class is really all you need, although it's easy enough to add some Scala goodness to iteration over directories easier.
import scala.collection.JavaConversions._
for(file <- myDirectory.listFiles if file.getName endsWith ".txt"){
// process the file
}
Upvotes: 15
Reputation: 41646
new java.io.File(dirName).listFiles.filter(_.getName.endsWith(".txt"))
Upvotes: 55