2013-07-18 2 views
7

Ich folgte diesem question:Java - Lesen Sie viele txt-Dateien in einem Ordner und verarbeiten sie

Jetzt in meinem Fall, ich habe 720 Dateien auf diese Weise benannt: „dom 24. März 2013_00.50.35_128.txt“, jede Datei hat ein anderes Datum und eine andere Uhrzeit. In Testphase verwendete i-Scanner, mit einer bestimmten txt-Datei, einige Operationen auf, es zu tun:

Scanner s = new Scanner (neue Datei ("stuff.txt"));

Meine Frage ist:

Wie kann ich Scanner wieder verwenden und lesen Sie alle 720 Dateien ohne den genauen Namen auf Scanner einstellen zu müssen?

Dank

+0

hier sehen http://stackoverflow.com/questions/189094/how-to-scan-a-folder-in-java – sotix

+0

Können Sie einfach alle Dateien im Verzeichnis lesen, oder haben Sie weitere Dateien, die nicht mit anderen Namensschemata im Verzeichnis gelesen werden sollen? –

+1

Sie können nicht. Ein neuer Scanner würde für jede Datei erstellt werden. –

Antwort

14

Angenommen, Sie alle Dateien an einem Ort:

File dir = new File("path/to/files/"); 

for (File file : dir.listFiles()) { 
    Scanner s = new Scanner(file); 
    ... 
    s.close(); 
} 

Beachten Sie, wenn Sie alle Dateien, die Sie nicht aufnehmen möchten, können Sie listFiles() ein FileFilter Argument geben kann filtere sie heraus.

+0

Ja, alle Dateien befinden sich im selben Ordner. – alessandrob

+2

Verdammt, du schlägst mich einfach dazu :) +1 um mich zu schlagen auf die Antwort –

+2

+1 zum Schließen des Scanners. –

6

Ja, erstellen Sie Ihr Dateiobjekt, indem Sie es auf ein Verzeichnis verweisen und dann die Dateien dieses Verzeichnisses auflisten.

File dir = new File("Dir/ToYour/Files"); 

if(dir.isDir()) { 
    for(File file : dir.listFiles()) { 
     if(file.isFile()) { 
     //do stuff on a file 
     } 
    } 
} else { 
    //do stuff on a file 
} 
1
File file = new File(folderNameFromWhereToRead); 

    if(file!=null && file.exists()){ 
     File[] listOfFiles = file.listFiles(); 

     if(listOfFiles!=null){ 

      for (int i = 0; i < listOfFiles.length; i++) { 
       if (listOfFiles[i].isFile()) { 
         // DO work 
       } 
      } 
     } 
    } 
+0

Ich bin kein Experte, aber ich denke, Ihre 'if (listOfFiles! = Null)' ist nicht notwendig. Sie haben soeben die 'listOfFiles' erstellt, also wie kann es null sein? –

+0

Ughh .. gleich mit Ihrem 'if (file! = Null)' ... Sie testen, ob eine Objektreferenz existiert, die Sie gerade vor dem Test gemacht haben! –

+0

Null überprüfen auf 'lisOfFiles' ist in Ordnung (es könnte passieren, wenn der Pfad existiert, aber eine Datei ist), aber auf der' Datei' ist nicht erforderlich. +1 für die 'isFile()' Prüfung trotzdem. –

3

können Sie versuchen, diese auf diese Weise

File folder = new File("D:\\DestFile"); 
File[] listOfFiles = folder.listFiles(); 

for (File file : listOfFiles) { 
if (file.isFile()&&(file.getName().substring(file.getName().lastIndexOf('.')+1).equals("txt"))) { 
    // Scanner 
    } 
} 
+0

+1 für 'isFile()' check. –

Verwandte Themen