Rechercher : dans
Par :

[JAVA] lister les fichiers d'une arborescence

Dernière réponse le 4 jun 2009 à 12:32:15 Jerhom, le 16 jui 2007 à 17:33:23 
 Signaler ce message aux modérateurs

A partir d'un objet File, je souhaite récupérer dans un tableau de File (File[]) ou une ArrayList(), l'ensemble des fichiers et sous-fichiers (mon objet File étant un répertoire initialement).

J'essaye de faire ça récursivement, mais la récursivité et moi ça fait 2. J'arrive à parcourir mon arbo, mais je n'arrive pas à stocker mon résultat. Est-ce que quelqu'un peu me donner un coup de main ?

Merci d'avance

Configuration: Windows 2000
Firefox 2.0.0.4

Meilleures réponses pour « [JAVA] lister les fichiers d'une arborescence » dans :
[Windows] Obtenir la liste des fichiers d'un dossier VoirLister le contenu d'un dossier Voici une astuce simple qui permet de lister le nom des fichiers contenus dans un répertoire. Vous pourrez obtenir en un clic les titres de vos chansons, de vos photos, etc. dans un fichier...
[MS-Dos] Lister le contenu d'un répertoire dans un fichier VoirIl peut s'avérer pratique d'effectuer le listage d'un ou plusieurs répertoires dans un fichier, afin de tenir par exemple un catalogue de fichiers. Sous MS-Dos (ou sous Windows en ouvrant une fenêtre d'invite de commande MS-Dos) il est possible...
Vider la liste des documents récents VoirWindows Vista mémorise la liste des fichiers récemment ouverts. Pour des raisons de confidentialité, vous pouvez désactiver cette opération. Comment supprimer et empêcher l'enregistrement de ces fichiers ? Faites un clic droit sur Démarrer et...
Java - Caractéristiques du langage VoirFichier source, compilation et machine virtuelle Le fichier source d'un programme écrit en Java est un simple fichier texte dont l'extension est par convention .java. Ce fichier source doit être un fichier texte non formatté, c'est-à-dire un...
Java: les opérateurs VoirQu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les...

1

jerhom, le 17 jui 2007 à 11:25:44
  • +3

Je crois avoir touvé la solution. Je déclare d'abord une variable dans ma classe de type ArrayList que je vais renseigner au fur et à mesure. J'obtiens une ArrayList que je n'ai plus qu'à transtyper pour avoir ma liste de File.


private ArrayList listeFichiers = null;

private void scruteRepertoire(File fichier, boolean reset){

if (reset){
listeFichiers.clear();
}

if (fichier.isDirectory()){
File [] sousRepertoire = fichier.listFiles();
for (int i=0 ; i<sousRepertoire.length ; i++){
scruteRepertoire(sousRepertoire[i],false);
}
}
listeFichiers.add(fichier);
}

public static void main(String[] args) {
File repertoire = new File(ParametresApplication.getInstance().getRepertoireScrutation());
scruteRepertoire(repertoire, true);
File[] tableauFichier = new File[listeFichiers.size()];
for (int i =0 ; i<listeFichiers.size() ; i++){
tableauFichier[i] = (File)listeFichiers.get(i);
}
}

Répondre à jerhom

2

danimo, le 17 jui 2007 à 11:32:03
  • +5

Bonjour,

/* Voila une methode qui te permettra de dresser la liste de fichier inclus dans un
repertoire, et ceci en recurence :
*/
public ArrayList scanDir ( String theDirectory ) throws IOException
{
File currDir = new File ( theDirectory );
ArrayList finalListFiles = new ArrayList();
// Return null if not a directory
if ( currDir.exists() && ! currDir.isDirectory() )
{
return null;
}

String[] fileList = currDir.list();

for (int i=0; i<fileList.length; i++ )
{
Object temp = scanDir ( theDirectory + File.separator + fileList[i] );
if ( temp == null )
// --- Add the path of the current file
finalListFiles.add(theDirectory + File.separator + fileList[i]);
else
// --- Add the array list of the current directory
}

// --- Finally, return the arrayList
return finalListFiles;
}
/*
Et ceci de facon recurente, c'est a dire que ca te donnera toute l'arborescence d'un
repertoire si tu as des sous-dossiers. Pour y faire appel :
ArrayList arborescence = scanDir ( "Chemin complet du repertoire");
*/
}

Répondre à danimo

3

 piopier, le 4 jun 2009 à 12:32:15

Plus simple :

	public void listerRecursif(File file, String prefix, List liste) {
		if (file.exists()) {
			if (file.isFile()) {
				liste.add(prefix+file.getName());
			}
			else if (file.isDirectory()) {
				File[] contenu	= file.listFiles();
				for(int i=0; i<contenu.length; i++) {
					listerRecursif(contenu[i], prefix+file.getName()+"/", liste);
				}
			}
		}
	}

Répondre à piopier
Collection CommentÇaMarche.net