2012-03-14 6 views
1

を読み取るためのスキャナを使用するときにnullポインタexeceptionを取得... programs.txtは、資産ディレクトリの下にあるは、コードスニペットeof..hereあるまで、ファイル私は、テキストファイルを読み込み、文字列を解析したい

public void insert_programs() throws FileNotFoundException { 
    BufferedReader bfr = null; 
    try { 
     bfr = new BufferedReader(new 
       InputStreamReader(getAssets().open("programs.txt"))); // <-- NPE occurs on that line 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    Scanner pgm = new Scanner(bfr); 
    pgm.useDelimiter("*{3}"); 
    while (pgm.hasNext()) { 
     String str = pgm.next(); 
      process(str); 
     } 
    } 

ログ

03-14 18:05:34.936: E/AndroidRuntime(467): at dalvik.system.NativeStart.main(Native Method) 
03-14 18:05:34.936: E/AndroidRuntime(467): Caused by: java.lang.NullPointerException 
03-14 18:05:34.936: E/AndroidRuntime(467): at android.content.ContextWrapper.getAssets(ContextWrapper.java:74) 
03-14 18:05:34.936: E/AndroidRuntime(467): at c.theworld.com.nikhil.Database.insert_programs(Database.java:40) 
+2

NPEが発生するコードを入力してください。 ( '// < - NPEはその行に発生します'のようなコメントを付けて) –

+0

あなたは見ている出力を提供できますか? – csturtz

+0

あなたの質問は何ですか? – csturtz

答えて

0

NullPointerExceptionを投げているContextWrapper.getAssets()方法を。 ContextWrapper(またはそれを拡張する別のクラス)を拡張していて、正しく初期化されていないように見えます。 ContextWrapper内のベースContextはヌルです。

0

あなたのBufferedReaderがnullになるようです。 try catchブロック内にスキャナコードを入れてみましたか?プログラムがIOExceptionを受け取った場合、bfrはnullになり、NPEを取得します。

public void insert_programs() throws FileNotFoundException { 
    BufferedReader bfr = null; 
    try { 
     bfr = new BufferedReader(new 
       InputStreamReader(getAssets().open("programs.txt"))); 

Scanner pgm = new Scanner(bfr); 
    pgm.useDelimiter("*{3}"); 
    while (pgm.hasNext()) { 
     String str = pgm.next(); 
      process(str); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    } 
1

あなたのコードにこれを追加します。

bfr = new BufferedReader(new 
      InputStreamReader(this.getAssets().open("programs.txt"))); 
+0

は "これは"暗黙のうちではないですか? – Mayank

関連する問題