Afficher le contenu d'un répertoire

Résolu/Fermé
estrellas6 Messages postés 36 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 7 mars 2014 - 21 août 2013 à 16:28
estrellas6 Messages postés 36 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 7 mars 2014 - 21 août 2013 à 20:53
Bonjour,

J'ai un répertoire "fichier" dans le Disque local(:D).
Le but de mon programme est d'afficher les fichiers de ce répertoire "fichier" :

Voici le code de mon programme:

package IO;

import java.io.File;

public class Fichier {


public static void main(String[] args) {

File file=null;

for(File racine:file.listRoots()){

try {

for(File nom : racine.listFiles()){

if (nom.getName()=="fichier"){
try{
for(File prenom:nom.listFiles()){
System.out.println(prenom.getName());
}
}
catch (NullPointerException e) {}
}

}

}
catch (NullPointerException e) {}


}
}

}

Je ne vois pas c'est quoi le problème ???

2 réponses

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
21 août 2013 à 19:29
Si tu affichais le message des Exceptions lorsqu'il y en a, tu sauras peut-être ce que c'est le problème !!

En l'occurrence tu as un NullPointerException sur cette ligne :
for (File nom : racine.listFiles())

En effet "listFiles" renvoie null lorsque le fichier n'est pas un répertoire, il faut donc penser à faire ce test avant de faire ta boucle !

Remarque : l'opérateur == compare uniquement l'instance de deux objets, en aucun cas leur valeur, il n'y a donc aucune chance que ton test getName()=="fichier" renvoie true, en plus tu fais une boucle sur listRoots (c'est à dire sur tous les lecteurs) alors que ta racine c'est le répertoire "D:/fichier" alors ça ne fera pas ce que tu veux...

public static void display(File path)
{
    System.out.println(path.getAbsolutePath());
    
    if (path.isDirectory())
        for (File file : path.listFiles())
            display(file);
}

public static void main(String[] args)
{
    display(new File("D:/fichier"));
}
0
estrellas6 Messages postés 36 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 7 mars 2014
21 août 2013 à 19:56
Pour mon programme le problème été la condition de if c'été
if(nom.getName.equals("fichier")) au lieu if(nom.getName()==("fichier"))
Maintenant avec les deux programmes y a un problème lorsque je veux afficher le contenu de c:/programmes (c'est le program file) le programme ne compile pas juste pour ce dossier
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
21 août 2013 à 20:13
"Programmes" est un alias pour les francophones mais le vrai nom du répertoire est "Program Files"
0
estrellas6 Messages postés 36 Date d'inscription vendredi 26 juillet 2013 Statut Membre Dernière intervention 7 mars 2014
21 août 2013 à 20:53
il a compilé merci :)
0