Prblm d'exception java et fonction listRoots

Fermé
OmEn - 27 avril 2002 à 12:09
 ariock - 27 avril 2002 à 20:52
Voila, j'ai créé un mini-programme qui liste tous les fichiers présent sur l'ordinateur. Premier problême : la fonction java.io.File listRoots() ne marche jamais avec mon compilateur, tout comme la fonction java.io.File listFiles(). Après avoir lus plusieurs page j'en ai conclu que c'était de la faute du compilateur car il me renvoie chaque fois l'erreur suivante : NoSuchMethodError ou quelque chose dans le genre. Alors j'ai essayé de contourner le problême mais cela me donne que je dois changer le code pour la version Mac et la version Windows. Que puis-je faire ? Mon deuxième problême est que mon code me retourne une NullPointerException sur la septieme ligne à cause que r est null alors qu'il ne l'est pas puisque je viens de l'initialisier alors je comprend pas. Merci une fois de plus de m'aider pour cette question et voici le code :

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]));
}
}
}

C'est la version macintosh à cause du "\" à la sixième ligne. Pour le rendre compatible Windows il suffirait de le remplacer par "C:\" ou "A:\" ... enfin toutes les coneries que vous voulez. Merci de me répondre rapidemment.


OmEn [i2n]
A voir également:

1 réponse

Ben c'est joli ton truc mais moi j'aime mieux:

public listFile(String file)
{
File root = new File(file);
String list[] = root.list();
try
{
for(int i=0;true;i++)
{
if(! list[i].isDirectory) System.out.println(list[i].toString());
}
}
catch(ArrayIndexOutOfBoundException) {};
}

Et si tu veux les sous dir, tu fait un else qui rapelle la methode en recursif... pas besoin de changer quoi que ce soit au code
0