0

你好文本文件,嘗試讀取在res /生與掃描儀

我想讀一個Scanner一個文件,這樣我可以使用字符串的輸入來構建其他對象。但是,我的掃描儀在嘗試創建時始終會拋出NullPointerException。我在res/raw文件夾中有pig.txt文本文件,但我的掃描儀似乎無法訪問它。我不知道我做錯了什麼。我已經註釋掉了該方法的其他代碼,但仍然有一個例外。

public void loadAchievements() { 
    try { 
     Scanner s = new Scanner(getResources().openRawResource(R.raw.pig)); 

     /** 
     * s = s.useDelimiter("."); Scanner StringScanner; StringScanner = 
     * new Scanner(s.next()); StringScanner = 
     * StringScanner.useDelimiter(":"); String keep = 
     * StringScanner.next(); String StringKeeper = StringScanner.next(); 
     * this.achievementBoard.add(new Achievement_Item(keep, 
     * StringKeeper)); StringScanner.close(); s.close(); 
     **/ 
    } catch (NullPointerException e) { 
     e.printStackTrace(); 
     System.out.println("NULLPOINTER"); 
    } 
} 
+0

你確定流*不是*實際爲空嗎? – kabuko 2013-03-01 01:14:57

+0

它是['NullPointerException'](http://developer.android.com/reference/java/lang/NullPointerException.html)。您可以使用['Log'](http://developer.android.com/tools/debugging/debugging-log.html)進行調試,不要使用'System.out'。 – 2013-03-01 01:18:34

回答

0

openRawResource()方法可以僅被用來打開抽拉,聲音,和原始資源;它將在字符串和顏色資源上失敗。由於您的pig.txt是包含String的文本文件,openRawResource()將無法打開新流,因此您的流爲空。

+0

那麼我可以用什麼來打開一個字符串文件? – 2013-03-01 01:34:44

+0

檢查這個帖子http://stackoverflow.com/questions/4866746/read-file-as-string – 2013-03-01 01:36:38

1
I had this problem today, and I resolved somehow. 
I know that old question, but I would share it if others have stuck. 





public class Question { 

     private int numberOfQuestion; 
     private String[] myquestion; 

     public Question(InputStream file_name) { 
      Scanner scanner = null; 

      try { 
       scanner = new Scanner(file_name); 

      } catch (Exception e) { 
       Log.d("Question", "Scanner :" + e); 
       System.exit(1); 
      } 

      this.numberOfQuestion = scanner.nextInt(); 
      scanner.nextLine(); 
      myquestion = new String[numberOfQuestion]; 

      for (int i = 0; i < numberOfQuestion; ++i) { 
       myquestion[i] = scanner.nextLine(); 

      } 

      scanner.close(); 


     } 
    --------------------------------------------------------- 
call: 

try { 
    MyScanner myScanner = new MyScanner(getResources().openRawResource(R.raw.input_question)); 
    } catch (Exception e) { 
     Log.d("Error", "input_question.txt"); 
    }