3

正在从 Assets 文件夹加载 xml 文件。我得到 OutOfMemoryError。我使用的代码是

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();
}

有没有另一种方法来摆脱这个异常。如果您发布任何代码,它将更有帮助。提前致谢。

4

3 回答 3

3

使用字符串解析大型 Xml 不是一个好主意。您应该转向解析器的流式传输版本。Google Http Java Client 提出了这样一个库:http ://code.google.com/p/google-http-java-client

于 2012-12-04T06:50:43.933 回答
0

把线=空;在附加到某人之后的while循环中。

于 2012-12-04T06:50:27.363 回答
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

Apache Commons IO 库可以从这里下载:http ://commons.apache.org/io/download_io.cgi

于 2013-07-08T08:15:44.020 回答