Fichiers dans un dossier?

testpakipeut Messages postés 2 Date d'inscription mercredi 4 février 2009 Statut Membre Dernière intervention 30 mars 2012 - 29 mars 2012 à 19:08
testpakipeut Messages postés 2 Date d'inscription mercredi 4 février 2009 Statut Membre Dernière intervention 30 mars 2012 - 30 mars 2012 à 17:25
Bonjour à tous, j'ai créé une fonction permettant de trouver des fichiers portant une extension dans un dossier. Sauf lorsque j'effectue des tests avec le dossier C:\ à un moment une exception se lève(Exception in thread "main" java.lang.NullPointerException
at Recherche.chercherExtension(Recherche.java:25)
at Recherche.chercherExtension(Recherche.java:60)
at Recherche.main(Recherche.java:76))
Voici mon code:

import java.io.File;
import java.io.IOException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
public class Recherche {
private static ArrayList <File> Filee =new ArrayList <File>();

public static ArrayList <File> chercherExtension (String dossier, String extension)
{
int cpt=0;
File dir=new File(dossier);
if(!dir.exists())
{
System.out.println("Erreur ! Le dossier n'existe pas ");
throw new IllegalArgumentException();//Lancement d'une exception si le dossier n'existe pas
}
if(dir.isFile())
{
System.out.println("Erreur ! "+dossier+" est un fichier");
throw new IllegalArgumentException();//Lancement d'une exception si le sois-disant dossier est en réalité un fichier
}

if(dir.list().length>0){
String[] listeFichiers=dir.list();
ArrayList<String> dossiers=new ArrayList<String>();

for (int i = 0; i < listeFichiers.length;i++){

String t=new String("");
File tmp=new File(dir.getAbsolutePath().concat("\"+listeFichiers[i]));//tmp prend chacun des fichiers contenus dans le dossier
if(tmp.isFile()){
if(tmp.getName().lastIndexOf(".")!=-1){
t=tmp.getName().substring(tmp.getName().lastIndexOf("."));//On extrait l'extension du fichier
}
}


if(t.equals(extension))//Si cet extension est egal avec celle voulue on..
{
System.out.println(tmp.getAbsolutePath());
Filee.add(new File(tmp.getAbsolutePath()));//on ajoute le fichier correspondant au tableau Filee

}

else if(tmp.isDirectory())//Si "tmp" est un dossier on rappel la fonction
{

dossiers.add(tmp.getAbsolutePath());
}



}

if(dossiers.size()!=0){
for(int i=0;i<dossiers.size();i++){

chercherExtension(dossiers.get(i),extension);//Fonction récursive
}
}
}


return Filee;
}
public static void main(java.lang.String[] args) {

System.out.println("Entrez le nom du dossier?");
Scanner sc=new Scanner(System.in);
String file=sc.nextLine();
System.out.println("Entrez l'extension (sans oublié le point <.>):");
String extension=sc.nextLine();
Recherche test=new Recherche();
test.Filee=chercherExtension(file,extension);
System.out.println("Listes des fichiers portant l'extention "+extension+":\n");
/*for(int i=0;i<test.Filee.size();i++)
System.out.println(test.Filee.get(i));*/




}
}


Merci de m'éclairer s'il vous plait :)

3 réponses

Utilisateur anonyme
29 mars 2012 à 22:18
Salut,
C'est correct (pour le code), mais je pense que tu dois donner le chemin complet du dossier dans lequel tu veux faire ta recherche.

Exemple:
Entrez le nom du dossier?
c:/MesProgrammes
Entrez l'extension (sans oublier le point <.>):
.java >>>>>>>>> ou bien unNom.java

Et tu devrais obtenir la liste de TOUS LES .java du dossier AINSI QUE ceux DES SOUS-DOSSIERS.

Cordialement,

...\ Dan /...
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
30 mars 2012 à 12:00
Bonjour.
A Priori, il n'aime pas ton dir.list().length, tu as peut être un dossier non accessible en lecture, ou un dossier vide qui provoque cette erreur
Essaye de modifier ton test comme ceci
String[] listeFichiers = dir.list();
if (listeFichiers != null && listeFichiers.length >0) {
0
testpakipeut Messages postés 2 Date d'inscription mercredi 4 février 2009 Statut Membre Dernière intervention 30 mars 2012
30 mars 2012 à 17:25
Je te remercie infiniment ca fonctionne maintenant :)
0
Rejoignez-nous