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.

2voto

Santosh Rathod Punkte 31
    static File mainFolder = new File("Folder");
    public static void main(String[] args) {

        lf.getFiles(lf.mainFolder);
    }
    public void getFiles(File f) {
        File files[];
        if (f.isFile()) {
            String name=f.getName();

        } else {
            files = f.listFiles();
            for (int i = 0; i < files.length; i++) {
                getFiles(files[i]);
            }
        }
    }

2voto

Mohammad Punkte 81

Ich denke, dies ist ein guter Weg, um alle Dateien in einem Ordner und Unterordner zu lesen

private static void addfiles (File input,ArrayList<File> files)
{
    if(input.isDirectory())
    {
        ArrayList <File> path = new ArrayList<File>(Arrays.asList(input.listFiles()));
        for(int i=0 ; i<path.size();++i)
        {
            if(path.get(i).isDirectory())
            {
                addfiles(path.get(i),files);
            }
            if(path.get(i).isFile())
            {
                files.add(path.get(i));
            }
        }
    }
    if(input.isFile())
    {
        files.add(input);
    }
}

2voto

Subhojit Das Punkte 131
void getFiles(){
        String dirPath = "E:/folder_name";
        File dir = new File(dirPath);
        String[] files = dir.list();
        if (files.length == 0) {
            System.out.println("The directory is empty");
        } else {
            for (String aFile : files) {
                System.out.println(aFile);
            }
        }
    }

2voto

Salvador Valencia Punkte 1220

Nur um die akzeptierte Antwort zu erweitern, speichere ich die Dateinamen in einer ArrayList (anstatt sie einfach in System.out.println auszugeben). Ich habe eine Hilfsklasse "MyFileUtils" erstellt, damit sie von anderen Projekten importiert werden kann:

class MyFileUtils {
    public static void loadFilesForFolder(final File folder, List<String> fileList){
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                loadFilesForFolder(fileEntry, fileList);
            } else {
                fileList.add( fileEntry.getParent() + File.separator + fileEntry.getName() );
            }
        }
    }
}

Ich habe den vollständigen Pfad zum Dateinamen hinzugefügt. Sie würden es so verwenden:

import MyFileUtils;

List<String> fileList = new ArrayList<String>();
final File folder = new File("/home/you/Desktop");
MyFileUtils.loadFilesForFolder(folder, fileList);

// Dump file list values
for (String fileName : fileList){
    System.out.println(fileName);
}

Die ArrayList wird mit "value" übergeben, aber der Wert wird verwendet, um auf dasselbe ArrayList-Objekt zu verweisen, das sich im JVM Heap befindet. Auf diese Weise fügt jeder Rekursionsaufruf Dateinamen zu derselben ArrayList hinzu (wir erstellen NICHT bei jedem Rekursionsaufruf eine neue ArrayList).

2voto

moldovean Punkte 2932

Oben wurden viele gute Antworten gegeben, hier ist ein anderer Ansatz: In einem Maven-Projekt wird alles, was Sie in den Ordner resources legen, standardmäßig in den Ordner target/classes kopiert. Um zu sehen, was zur Laufzeit verfügbar ist

 ClassLoader contextClassLoader = 
 Thread.currentThread().getContextClassLoader();
    URL resource = contextClassLoader.getResource("");
    File file = new File(resource.toURI());
    File[] files = file.listFiles();
    for (File f : files) {
        System.out.println(f.getName());
    }

Um nun die Dateien aus einem bestimmten Ordner abzurufen, sagen wir, Sie haben einen Ordner namens "res" in Ihrem Ressourcenordner, ersetzen Sie einfach:

URL resource = contextClassLoader.getResource("res");

Wenn Sie Zugang zu Ihrem Paket com.companyName haben möchten, dann:

contextClassLoader.getResource("com.companyName");

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