gpt4 book ai didi

java - XmlSerializer 会不会返回一个太长的 String 而不是 Java 中的字符串?

转载 作者:行者123 更新时间:2023-11-30 11:07:55 27 4
gpt4 key购买 nike

我目前正在构建一个 android 应用程序,并决定使用 Xml 实现而不是数据库来存储数据。我在应用程序启动时将 xml 文件加载到列表中,当我想将其保存回来时,我使用 XmlSerializer 将其格式化为 xml,然后输出到 StringWriter。然后,我在 StringWriter 对象上调用 .toString() 并将该字符串写回到文件中。

但是我注意到应用程序 xml 文件增长得非常快,并且想知道如果它的长度超过最大字符串长度会发生什么。有没有办法从 StringWriter 中获取字符串数组?这是我的序列化程序方法。

public String articlesAsXml() {
XmlSerializer serializer = Xml.newSerializer();
StringWriter writer = new StringWriter();
try {
serializer.setOutput(writer);
serializer.startDocument("UTF-8", true);
serializer.startTag("", "articles");
for (Articles art: AllArticles){

serializer.startTag("", "art");

serializer.startTag("", "id");
serializer.text(art.Article_Id);
serializer.endTag("", "id");

serializer.startTag("", "title");
serializer.text(art.Article_Title);
serializer.endTag("", "title");

serializer.startTag("", "body");
serializer.text(art.Article_Body);
serializer.endTag("", "body");

serializer.endTag("", "art");
}
serializer.endTag("", "articles");
serializer.endDocument();
return writer.toString();
}
catch (Exception e) { return "Failed"; }
return null;
}

提前致谢

最佳答案

字符串的长度可能与您有多少可用堆内存一样长。如果用完,您将得到一个 OutOfMemoryError

一种解决方案是不使用 StringWriter(它临时为稍后将写入文件的数据分配内存),而是直接将数据写入文件。

BufferedWriter writer = null;
try {
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
serializer.setOutput(writer);
...
} catch (IOException e) {
Log.e(tag, "cannot write to file " + file, e);
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
Log.e(tag, "cannot close file " + file, e);
}
}
}

关于java - XmlSerializer 会不会返回一个太长的 String 而不是 Java 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28700612/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com