2011-12-24 9 views

risposta

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

Per ora, è necessario utilizzare le librerie Java per farlo.

13

La classe File Java è davvero tutto ciò che serve, anche se è abbastanza facile aggiungere un po 'di bontà Scala di iterazione su directory più facile.

import scala.collection.JavaConversions._ 

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

Ho provato a modificare due piccoli errori di battitura, ma dato che sono solo due caratteri, non me lo permetterebbe. Il nome del pacchetto è 'collection', e ti manca una parentesi chiusa nel tuo' for'. – Eduardo

15

La versione JDK7, utilizzando la nuova classe DirectoryStream è:

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

Invece di una stringa, questa restituisce un percorso, che ha un sacco di metodi pratici su di esso, come 'relativizzare' e ' sottotracciato'.

Nota che è anche necessario importare import scala.collection.JavaConversions._ per abilitare l'interoperabilità con le raccolte Java.

+0

+1 per l'utilizzo di java.nio – jasonoriordan

+1

Non so se questo ha funzionato nelle versioni precedenti, ma ora ottengo l'errore 'valore map non è un membro di java.nio.file.DirectoryStream [java.nio.file. Percorso] ' – rumtscho

+0

Viene visualizzato lo stesso errore utilizzando Java 8 –

Problemi correlati