2011-03-22 2 views
0

j'ai cet extrait:Bizarre NullPointerException Erreur

Log.d("iBank", "Helper: " + helper.toString()); 
Log.d("iBank", "File: " + file.toString()); 
if(helper.read(file).equals("")) 
{ 
    dataDir = Environment.getExternalStoragePublicDirectory(
      Environment.DIRECTORY_DOWNLOADS); 
} 
else 
{ 
    dataDir = new File(helper.read(file)); 
} 

Mon problème est, il jette toujours NullPointerException sur if(helper.read(file).equals("")). J'ai fait Log.d() sur les deux objets (comme vous voyez sur le code ci-dessus) mais il n'a pas jeté cette exeption. Au début, je pense que c'est quelque chose qui ne va pas sur helper.read(). Mais, comme vous le voyez ci-dessous, je l'ai déjà attraper erreur possible:

public String read(File file) 
{ 
    if(file == null) 
     return ""; 
    String data = ""; 
    if(!file.exists()) 
    { 
     try { 
      file.createNewFile(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    try { 
     FileReader fr = new FileReader(file); 
     BufferedReader bfr = new BufferedReader(fr); 
     data = bfr.readLine(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return data; 
} 

Je ne sais pas quel est le problème avec mon code. Peut-être que je manque quelque chose, mais je ne peux pas le comprendre.

MISE À JOUR

je fixe mon code pour return (data == null) ? "" : data;

Répondre

2

Je pense bfr.readLine(); renvoie null alors helper.read (fichier) est null. Readline de BufferedReader renvoie le contenu de la ligne ou null si aucun caractère n'a été lu avant la fin du lecteur a été atteint.

Etes-vous sûr que le fichier n'est pas vide. file.toString() convertit l'objet fichier en représentation sous forme de chaîne mais vous ne savez pas si le fichier est vide ou non.

2

Au lieu de l'exploitation forestière, essayez de déboguer et de voir ce qui est vraiment passe ...

Je pense: alors que le débogage, vous verrez que bfr.readLine() renvoie la valeur null qui est stocké dans data. Cela aboutit à read() retournant null, aussi.

+0

vous avez raison. C'est parce que les données sont vides. – ariefbayu