Java 在Android中将流转换为字符串时发生OutOfMemoryError
我正在从资产文件夹加载xml文件。我正在摆脱记忆错误。 我使用的代码是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 {
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文件中读取一行,处理它,然后继续下一行。不要将整个文件读入内存,文件可能非常大。很抱歉,我不能在别人的帖子上发表评论。你能指导我如何使用这个吗?我有点困惑。你必须添加外部库