2011-12-24 18 views

Respuesta

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

Por ahora, debe usar las bibliotecas de Java para hacerlo.

13

La clase de archivos Java es realmente todo lo que necesita, aunque es bastante fácil de añadir un poco de bondad Scala de iteración sobre directorios más fácil.

import scala.collection.JavaConversions._ 

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

Traté de editar dos pequeños errores tipográficos, pero como son solo dos caracteres, no me lo permitieron. El nombre del paquete es 'collection', y le falta un paréntesis de cierre en su' for'. – Eduardo

15

La versión JDK7, el uso de la nueva clase DirectoryStream es:

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

En lugar de una cadena, este devuelve una ruta, que tiene un montón de métodos prácticos sobre ella, como 'relativizar' y " subpath '.

Tenga en cuenta que también necesitará importar import scala.collection.JavaConversions._ para habilitar la interoperabilidad con colecciones de Java.

+0

+1 para usar java.nio – jasonoriordan

+1

No sé si esto ha funcionado en versiones anteriores, pero ahora obtengo el error 'value map no es miembro de java.nio.file.DirectoryStream [java.nio.file. Ruta] ' – rumtscho

+0

Obtengo ese mismo error usando Java 8 –

Cuestiones relacionadas