Java 在Android中将流转换为字符串时发生OutOfMemoryError

Java 在Android中将流转换为字符串时发生OutOfMemoryError,java,android,out-of-memory,bufferedreader,Java,Android,Out Of Memory,Bufferedreader,我正在从资产文件夹加载xml文件。我正在摆脱记忆错误。 我使用的代码是 private String convertStreamToString(InputStream is) { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); StringBuilder sb = new StringBuilder(); String line = null; try {

我正在从资产文件夹加载xml文件。我正在摆脱记忆错误。 我使用的代码是

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();
}
是否有其他方法可以消除此异常。 如果您发布任何代码,将更有帮助。
提前感谢。

put line=null;在附加到sb之后在while循环中。

使用字符串解析大型Xml不是一个好主意。您应该转向解析器的流式版本。Google Http Java客户端提出了这样一个库:

试试下面的方法

您是否尝试过使用内置方法将流转换为字符串?它是ApacheCommons库(org.Apache.Commons.io.IOUtils)的一部分

那么您的代码就是这一行:

String total=IOUtils.toString(inputStream)

相关文档可在此处找到:


Apache Commons IO库可以从这里下载:

您可以从XML文件中读取一行,处理它,然后继续下一行。不要将整个文件读入内存,文件可能非常大。很抱歉,我不能在别人的帖子上发表评论。你能指导我如何使用这个吗?我有点困惑。你必须添加外部库