Fichiers et listes

OmEn -  
 OmEn -
Voilà mon second problême : j'ai créé un prog' le plus petit possible qui listerait tous les fichiers de l'ordi. C'est une version pour macintosh car la racine est quelque chose comme : /Macintosh HD/. C'est cela que cherche le début du code et la suite ouvre chaque dossier. Mais pourquoi cela me renvoie-t-il toujours une NullPointerException ?

import java.io.*;
public class TrivialApplication
{
public static void main(String[] a)
{
String[] r = new File(new File("/").list()[0]).list();
if(r.length > -1) for(int i = 0 ; i < r.length ; i++) new D(new File(r[i]));
System.exit(0);
}
}
public class D
{
public D(File f)
{
if(f.isFile()) System.out.println(f.getName());
else
{
String[] l = f.list();
if(l.length > 0) for(int i = 0 ; i < l.length ; i++) new D(new File(l[i]));
}
}
}

Merci de me répondre au plus vite.

OmEn

7 réponses

ariock Messages postés 125 Statut Membre 5
 
C'est moi qui voix double ou t'a deja poser la question et j'ai deja repondu?
Enfin je recommence pasque la derneire fois j'avoue j'ai fait un peu vite et il y avais une erreur ds mon code...

public class onsenfou
{
public onsenfou() {};

public void main(...)
{
list(new String("..." /*ici tu met la racine*/));
};

public void list(String s)
{
File source = new File(s);

if(source.isDirectory())
{
String files[] = source.list();
try
{
for(int i=0;true;i++)
{
list(files[i]);
}
}
catch(ArrayOutOfBoundException) {};
}
else System.out.println(source.toString());
};
};

Voila facille non? Et tu peux meme ameliorer pour avoir un alignement etc...

Je suis un gaucher contrariant. C'est plus fort que moi,
il faut que j'emmerde les droitiers.
0
OmEn
 
Je ne vois pas le rapport... c'est une autre facon de faire mais moi je veux savoir le bug dans ma méthode.

OmEn
0
ariock Messages postés 125 Statut Membre 5
 
Pour commencer ds ta methode tu teste 25 fois le meme chose, et ensuite elle est un peu lourde... pasque oublie pas que java c'est pas un fusee alors si tu veux un prog le plus petit possible...

Pour ton probleme exactement, je sais pas j'ai pas java sur la machine ou je suis...

Je suis un gaucher contrariant. C'est plus fort que moi,
il faut que j'emmerde les droitiers.
0
OmEn
 
Si tu ne parles que du début, c'est pas un blême. Pour le faire version PC, c'est plus simle regarde :

import java.io.*;
public class TrivialApplication
{
public static void main(String[] a)
{
String[] r = new File(new File("C:/").list();
if(r.length > -1) for(int i = 0 ; i < r.length ; i++) new D(new File(r[i]));
System.exit(0);
}
}
public class D
{
public D(File f)
{
if(f.isFile()) System.out.println(f.getName());
else
{
String[] l = f.list();
if(l.length > 0) for(int i = 0 ; i < l.length ; i++) new D(new File(l[i]));
}
}
}

Alors ?

OmEn
0
ariock Messages postés 125 Statut Membre 5
 
Non non je parlais pas du debut... mais justement de la suite...
Je sais bien que ta methode te tien a coeur, mais pourquoi faire avec 2 classe si tu peu faire avec une seule? Tu encombre la pile avec des truc qui ne servent a rien...


Enfin pour un peu plus d'info mets moi le message d'erreur complet que tu a, je verrai ce que je peux faire...

Je suis un gaucher contrariant. C'est plus fort que moi,
il faut que j'emmerde les droitiers.
0
OmEn
 
Exception Occurred:
java.lang.NullPointerException
at TrivialApplication.main(Compiled Code)
at com.apple.mrj.JManager.JMStaticMethodDispatcher.run(JMAWTContextImpl.java)
at java.lang.Thread.run(Thread.java)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ariock Messages postés 125 Statut Membre 5
 
A oui...

Bon essayons pour mac :

... main(...)
{
File f = new file("/");
//info de debug

D dd = new D(f);
// info de debug
}

Sans System.exit ... il le fera comme un grand...

Je suis un gaucher contrariant. C'est plus fort que moi,
il faut que j'emmerde les droitiers.
0
OmEn
 
Le blême c'est qu'il va lister "/" alors qu'il n'y a là que rarement autre chose que "Macintosh HD" ou "CD audio" c'est pourquoi je commence directe en listant "Macintosh HD". C'est logique mais je vais essayer sans,

OmEn
0
ariock Messages postés 125 Statut Membre 5
 
Compris pour le boucle, mais si ca marche sans c'est deja un pas on sais ou est l'erreur

Je suis un gaucher contrariant. C'est plus fort que moi,
il faut que j'emmerde les droitiers.
0
OmEn
 
Mais mon debugger me dit que l est null à la ligne :

if(l.length > 0) for(int i = 0 ; i < l.length ; i++) new D(new File(l[i]));

alors qu'il est défini une ligne plus haut :

String[] l = f.list();

Qu'est-ce donc ?

OmEn
0