2011-06-26 51 views
0

当我从文件创建大型数组时,我得到了一个nullpointerexception。将为.txt文件的每一行创建一个新元素。当我使用从这个文件创建的数组时,我得到了nullPointerException。从文件-Android创建数组时NullPointerException?

这里是我的代码:

static String[] results=new String[172820]; 
      public String[] getWords(){ 
    try{ 
     InputStream fstream = getResources().openRawResource(R.raw.enable1); 

     DataInputStream in = new DataInputStream(fstream); 
     BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
     String strLine; 

     for (int x=0; (strLine = br.readLine()) != null; x++) { 
      results[x]=strLine;    
     } 
     in.close(); 
     }catch (Exception e){//Catch exception if any 
      System.err.println("Error: " + e.getMessage()); 
     } 
     return results; 
} 
+0

您应该使用调试器的Step Over来定位哪一行代码会引发此异常。 –

+0

或者在命令提示符下使用'adb logcat'。 – Haphazard

+3

'static String [] results = new String [172820];'@。@不要这样做。使用ArrayList,您不必担心超出范围的异常,或者分配的数量超过您的需要。 – kcoppock

回答

2

起初我要提到,大多数设备具有16MB的最大堆大小,你可能会超过了,但后来我发现this page。看起来512是最大的数组大小。我会尝试@kcoppock给出的建议,并尝试一个ArrayList。

作为一个方面说明:它似乎你正在加载“单词”到数组中。市场上没有任何设备的速度足够快,可以以任何效率遍历172K物品阵列;我相信你正在为用户设置一个缓慢而痛苦的体验。