2011-09-04 9 views
27

voglio usareCome ottenere i contenuti di una cartella e messi in un ArrayList

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

per fare un ArrayList con il contenuto della cartella.

Non sono molto bravo con i lettori bufferizzati, quindi per favore dimmi se è meglio.

Ecco il codice che ho finora:

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){ 

    } 
} 
} 

Grazie, obiedog

+1

possibile duplicato di [come ottenere le informazioni su file e cartelle in java?] (Http://stackoverflow.com/questions/5026954/how-to-get-the-file-and-folder-information- in-java) –

+2

Sembra un po 'come fare i compiti ... Prova a usare File.list(). –

risposta

59

Il modo più semplice di farlo è:

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

E se quello che vuoi è una lista di nomi:

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

L'API File viene automaticamente inoltrata alle cartelle figlio? – blong

+1

@blong No, non è così. 'File.listFiles()' elenca solo il contenuto della directory specificata. Per l'elenco ricorsivo, consulta http://stackoverflow.com/a/14676464/1340631 o http://stackoverflow.com/a/2534643/1340631. – scai

+0

Grazie mille per l'informazione @scai! Saluti :) – blong

23

avete read the API documentation for java.io.File?

File f = new File("C:\\"); 
File[] list = f.listFiles(); 
+0

Perché il downvote? –

+0

Reup per te. Buona risposta. –

+0

Ho svalutato anche questa bella risposta succinta. = :) –

4

Il File-class offre una listFiles()-method che restituisce un File -array di tutti i file nella cartella corrente.

Per creare una lista array, è possibile utilizzare Arrays-class ed è asList()-method. Vedi here.

Se sono necessari solo i nomi di file oi percorsi come stringhe, esiste anche un list()-method che restituisce un array di stringhe. Per convertire la matrice in ArrayList, seguire i passaggi illustrati nella domanda collegata.

1

Streams sono veloci e molto facile da leggere:

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)); 
Problemi correlati