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
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()));
Avez-vous lire la documentation de l'API pour Java.io.File
?
File f = new File("C:\\");
File[] list = f.listFiles();
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.
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));
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());
}
}
}