Erreur java java.lang.NullPointerException
Bonjour,
j'ai cette erreur et je ne sai pas d'ou vient:
Exception in thread "main" java.lang.NullPointerException
at pdf.<init>(pdf.java:30)
at nn.main(nn.java:11)
voila la classe pdf:
import java.io.File;
import java.util.Stack;
public class pdf {
public pdf()
{
Stack<String> pile=new Stack();
String dd="d:/";
String v;
int i;
boolean bol=false;
String h="pdf";
File[] lis=null;
i=0;
while(bol==false)
{
// dd=(String) pile.pop();
File g=new File(dd);
lis=g.listFiles();
i=0;
while(i<lis.length )
{
if(lis[i].isDirectory()==true){pile.push(lis[i].getPath()); }
else {
v=getExtension(lis[i]);
if(h.equals(v)){System.out.println("le fichier"+ lis[i]);}
}
i=i+1;
}
if(!pile.isEmpty()) {dd=(String) pile.pop(); }
else{bol=true;}
}
}
public static String getExtension(File f) {
if(f != null) {
String filename = f.getName();
int i = filename.lastIndexOf('.');
if(i>0 && i<filename.length()-1) {
return filename.substring(i+1).toLowerCase();
}
}
return null;
}
}
et la classe main:
import java.io.IOException;
public class nn {
public static void main (String arguments[]) throws IOException
{
pdf mm=new pdf();
}
}
et merci d'avence.
j'ai cette erreur et je ne sai pas d'ou vient:
Exception in thread "main" java.lang.NullPointerException
at pdf.<init>(pdf.java:30)
at nn.main(nn.java:11)
voila la classe pdf:
import java.io.File;
import java.util.Stack;
public class pdf {
public pdf()
{
Stack<String> pile=new Stack();
String dd="d:/";
String v;
int i;
boolean bol=false;
String h="pdf";
File[] lis=null;
i=0;
while(bol==false)
{
// dd=(String) pile.pop();
File g=new File(dd);
lis=g.listFiles();
i=0;
while(i<lis.length )
{
if(lis[i].isDirectory()==true){pile.push(lis[i].getPath()); }
else {
v=getExtension(lis[i]);
if(h.equals(v)){System.out.println("le fichier"+ lis[i]);}
}
i=i+1;
}
if(!pile.isEmpty()) {dd=(String) pile.pop(); }
else{bol=true;}
}
}
public static String getExtension(File f) {
if(f != null) {
String filename = f.getName();
int i = filename.lastIndexOf('.');
if(i>0 && i<filename.length()-1) {
return filename.substring(i+1).toLowerCase();
}
}
return null;
}
}
et la classe main:
import java.io.IOException;
public class nn {
public static void main (String arguments[]) throws IOException
{
pdf mm=new pdf();
}
}
et merci d'avence.
Configuration: Windows XP Firefox 2.0.0.20
9 réponses
-
c vrai ta raison mais sa regle les pbs grace a cella l'algo marche tres bien
-
Bonsoir,
Le fameux null pointer exception, veut dire que tu fais appel à quelque chose qui est null.
Essai de voir si ce n'est pas ceci :
File[] lis=null;
i=0;
while(bol==false)
{
// dd=(String) pile.pop();
File g=new File(dd);
lis=g.listFiles();
Ici, tu instancies un objet g de type File, avec le chemin dd or dd n'est pas le chemin d'un répertoire tu n'as mis que D:/.
Donc comme ta variable lis est instanciée à null et que tu mets dedans g.listFiles (qui est null), je pense que ça vient de là.
Sauf erreur ! -
mais d:/ il a des repertoires
-
le prb c'est a l'instruction while(i<lis.length)
je ne sai pa pourkoi? -
oui c vrai tu a raison mais comment je cherche les fichier dans D:/?
-
-
Contributeur@NixialDe toutes façons la racine du système de fichiers est considéré comme un répertoire. J'ai d'ailleurs essayé chez moi sur c:/ et ce code a marché.
A mon avis c'est uniquement un problème de récurrence : à un moment dans l'exécution tu as un répertoire que tu affectes à lis qui est null ou je ne sais pas quoi, et c'est ça qui fait planter ton algo.
Cordialement,
-
-
je veux rechercher des fichier pdf dans tout D: et merci de m'aider
-
ok merci bcp
-
il m'ont dit d'utiliser try{} catch{}
-
ContributeurC'est une erreur d'utiliser un try/catch avec un NullPointerException.
Conceptuellement, si tu as un NullPointerException, c'est que tu as fait une opération non conforme, tu as un problème dans ton algorithme.
Le try/catch te permettra d'éviter le problème, mais c'est de la programmation dégueulasse (c'est une pauvre rustine sur un pneu pourri).
Cordialement,