791 Stimmen

Wie kann man alle Dateien in einem Ordner mit Java lesen?

Wie kann ich alle Dateien in einem Ordner mit Java lesen? Es spielt keine Rolle, welche API.

4voto

andrej Punkte 3886

Schöne Verwendung von java.io.FileFilter wie gesehen bei https://stackoverflow.com/a/286001/146745

File fl = new File(dir);
File[] files = fl.listFiles(new FileFilter() {          
    public boolean accept(File file) {
        return file.isFile();
    }
});

3voto

JamesC Punkte 324

Ich stimme zwar mit Rich, Orian und den anderen für die Verwendung von:

    final File keysFileFolder = new File(<path>); 
    File[] fileslist = keysFileFolder.listFiles();

    if(fileslist != null)
    {
        //Do your thing here...
    }

Aus irgendeinem Grund verwenden alle Beispiele hier absolut Pfad (d.h. den ganzen Weg von Root, oder, sagen wir, Laufwerksbuchstabe (C:\) für Windows..)

Ich möchte hinzufügen, dass es möglich ist, Folgendes zu verwenden relativ Pfad ebenfalls. Wenn also Ihr pwd (aktuelles Verzeichnis/Ordner) folder1 ist und Sie folder1/subfolder analysieren wollen, schreiben Sie einfach (im obigen Code anstelle von ):

    final File keysFileFolder = new File("subfolder");

3voto

File directory = new File("/user/folder");      
File[] myarray;  
myarray=new File[10];
myarray=directory.listFiles();
for (int j = 0; j < myarray.length; j++)
{
       File path=myarray[j];
       FileReader fr = new FileReader(path);
       BufferedReader br = new BufferedReader(fr);
       String s = "";
       while (br.ready()) {
          s += br.readLine() + "\n";
       }
}

3voto

pdp Punkte 3734

Einfaches Beispiel, das mit Java 1.7 funktioniert, um Dateien in Verzeichnissen, die auf der Kommandozeile angegeben werden, rekursiv aufzulisten:

import java.io.File;

public class List {
    public static void main(String[] args) {
        for (String f : args) {
            listDir(f);
        }
    }

    private static void listDir(String dir) {
        File f = new File(dir);
        File[] list = f.listFiles();

        if (list == null) {
            return;
        }

        for (File entry : list) {
            System.out.println(entry.getName());
            if (entry.isDirectory()) {
                listDir(entry.getAbsolutePath());
            }
        }
    }
}

3voto

GOXR3PLUS Punkte 6319

Java 8 Files.walk(..) ist gut, wenn man sich sicher ist, dass sie nicht werfen Vermeiden Sie Java 8 Files.walk(..) Abbruch wegen ( java.nio.file.AccessDeniedException ) .

Hier ist eine sichere Lösung, wenn auch nicht so elegant wie Java 8 Files.walk(..) :

int[] count = {0};
try {
    Files.walkFileTree(Paths.get(dir.getPath()), new HashSet<FileVisitOption>(Arrays.asList(FileVisitOption.FOLLOW_LINKS)),
            Integer.MAX_VALUE, new SimpleFileVisitor<Path>() {
                @Override
                public FileVisitResult visitFile(Path file , BasicFileAttributes attrs) throws IOException {
                    System.out.printf("Visiting file %s\n", file);
                    ++count[0];

                    return FileVisitResult.CONTINUE;
                }

                @Override
                public FileVisitResult visitFileFailed(Path file , IOException e) throws IOException {
                    System.err.printf("Visiting failed for %s\n", file);

                    return FileVisitResult.SKIP_SUBTREE;
                }

                @Override
                public FileVisitResult preVisitDirectory(Path dir , BasicFileAttributes attrs) throws IOException {
                     System.out.printf("About to visit directory %s\n", dir);
                    return FileVisitResult.CONTINUE;
                }
            });
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X