2012-12-04 40 views
3

正在從Assets文件夾加載xml文件。我得到OutOfMemoryError。 我所使用的代碼OutOfMemoryError,同時將Stream轉換爲Android中的字符串

private String convertStreamToString(InputStream is) { 
    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder sb = new StringBuilder(); 

    String line = null; 
    try { 
     while ((line = reader.readLine()) != null) { 
      sb.append(line + NEW_LINE); 
     } 
     reader.close(); 

    } catch (IOException e) { 
     //do nothing. 
    } finally { 
     try { 
      reader.close(); 
     } catch (IOException e) { 
      //do nothing.  
     } 
    } 
    reader=null; 
    return sb.toString(); 
} 

有沒有擺脫這個異常的另一種方式。 如果您發佈任何代碼,它會更有幫助。 在此先感謝。

+0

您可以讀取XML文件,並處理一行,並繼續下一行。不要將整個文件讀入內存,該文件可能非常大。 –

回答

0

put line = null;在追加到某人之後的while循環中

+0

,很抱歉把這個作爲答案,因爲我不能在其他人的帖子發表評論。 –

+0

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你可以隨時評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/faq#reputation),你將能夠[評論任何帖子](http://stackoverflow.com/privileges/comment)。 – Nikhil

+0

我知道,謝謝。 –

0

試試下面

你試過內置的方法來流轉換爲字符串?它是Apache Commons庫(org.apache.commons.io.IOUtils)的一部分。

然後您的代碼將是這樣一個行:

字符串總= IOUtils.toString(的inputStream);

它的文檔可以在這裏找到:http://commons.apache.org/io/api-1.4/org/apache/commons/io/IOUtils.html#toString%28java.io.InputStream%29

阿帕奇下議院IO庫可以從這裏下載:http://commons.apache.org/io/download_io.cgi

+0

你能指導我如何使用這個?我有點困惑。 – KMI

+0

你必須添加外部庫 – sravan