我解析了一个具有Base64编码图像的XML。我想提取图像并解析XML的其余部分。我已写入到提取图像的代码如下:将Base64编码的数据从XML保存到文件中
private void saveFormImage(String imageText) throws IOException {
FileOutputStream fos = null;
try {
Base64 base64=new Base64();
byte decoded[]=base64.decode(imageText.getBytes());
File file = new File(<file loc>);
fos = new FileOutputStream(file);
fos.write(decoded);
} finally {
IOUtils.closeQuietly(fos);
}
}
我使用JDOM解析XML和先获得imageText作为字符串并将该字符串传递给该方法。然后我使用Apache编解码器库来解码Base64编码数据并存储到文件中。
这是最好的方法吗?这不是非常快。它大约在2秒内完成。有没有更快,更有效的记忆方式?
在下面的评论中更新 - 有没有一种方法可以将数据从XML直接传输到OutputStream,并只是在内存中解码缓冲区?这是一种更有记忆效率的做事方式吗?或者,当XML大小最大为2.5 MB时应该如此。
你问是否代码是一样有效的?如果Apache编解码器库是Base64解码的最佳选择,或者如果在XML中使用Base64编码序列化图像的整个解决方案是一个很好的解决方案? 您能够真正改变哪些? – RonK 2012-03-11 12:17:34
Apache编解码器库..我没有关于后者的选项。 XML中已经包含了图像,我只需要知道它。我想知道更多,有没有办法将XML中的数据传输到OutputStream上,而无需将整个数据保存为堆中的字符串? XML大小约为1.5MB。这是我应该担心的尺寸吗? – sethu 2012-03-11 12:42:08
http://stackoverflow.com/a/1687218/14419 – 2012-03-11 12:53:37