snappy
snappy

Reputation: 2791

Reading files from a directory in Scala

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

Answers (4)

Nick Cecil
Nick Cecil

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

Dave Griffith
Dave Griffith

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

huynhjl
huynhjl

Reputation: 41646

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

Upvotes: 55

Daniel C. Sobral
Daniel C. Sobral

Reputation: 297275

For now, you should use Java libraries to do so.

Upvotes: 2

Related Questions