web-dev-qa-db-fra.com

Comment obtenir le contenu d'un dossier et le placer dans une liste de tableaux

Je veux utiliser

File f = new File("C:\\");

pour créer une ArrayList avec le contenu du dossier.

Je ne suis pas très bon avec les lecteurs tamponnés, alors dites-moi si c'est mieux.

Voici le code que j'ai jusqu'à présent:

import Java.io.BufferedReader;
import Java.io.File;
import Java.io.FileReader;
import Java.io.IOException;


public class buffered_read {
public static void main(String[] args) {
    File f = new File("C:\\");
    int x = 0;
    boolean b = true;
    File list[];
    while(b = true){

    }
}
}

Merci, obiedog

33
Obiedog

La façon la plus simple de procéder est:

File f = new File("C:\\");
ArrayList<File> files = new ArrayList<File>(Arrays.asList(f.listFiles()));

Et si vous voulez une liste de noms:

File f = new File("C:\\");
ArrayList<String> names = new ArrayList<String>(Arrays.asList(f.list()));
71
user927911

Avez-vous lire la documentation de l'API pour Java.io.File ?

File f = new File("C:\\");
File[] list = f.listFiles();
28
Philipp Reichart

La classe File- propose une méthode listFiles()- qui renvoie un tableau File- de tous les fichiers du dossier en cours.

Pour en faire une liste de tableaux, vous pouvez utiliser la classe Arrays- et c'est méthode asList()- . Voir ici .

Si vous n'avez besoin que des noms de fichiers ou des chemins d'accès en tant que chaînes, il existe également une méthode list()- qui renvoie un tableau de chaînes. Pour convertir le tableau en ArrayList, suivez les étapes illustrées dans la question liée.

4
Lukas Knuth

Les flux sont rapides et très faciles à lire:

final Path rootPath = Paths.get("/tmp");

// All entries Path objects
ArrayList<Path> all = Files
        .list(rootPath)
        .collect(Collectors.toCollection(ArrayList::new));

// Only regular files at Path objects
ArrayList<Path> regularFilePaths = Files
        .list(rootPath)
        .filter(Files::isRegularFile)
        .collect(Collectors.toCollection(ArrayList::new));

// Only regular files as String paths
ArrayList<String> regularPathsAsString = Files
        .list(rootPath)
        .filter(Files::isRegularFile)
        .map(Path::toString)
        .collect(Collectors.toCollection(ArrayList::new));
2
Kamran

Si vous souhaitez récupérer tous les fichiers de manière récursive, vous pouvez faire quelque chose comme ci-dessous

public class FileLister {

    static List<String> fileList = new ArrayList<String>();

    public static void main(String[] args) {
        File file = new File("C:\\tmp");
        listDirectory(file);
        System.out.println(fileList);
    }

    public static void listDirectory(File file) {
        if(file.isDirectory()) {
            File[] files = file.listFiles();
            for(File currFile : files) {
                listDirectory(currFile);
            }
        }
        else {
            fileList.add(file.getPath());
        }
    }
}
0
Vishal