2012-03-11 56 views
1

我解析了一个具有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时应该如此。

+0

你问是否代码是一样有效的?如果Apache编解码器库是Base64解码的最佳选择,或者如果在XML中使用Base64编码序列化图像的整个解决方案是一个很好的解决方案? 您能够真正改变哪些? – RonK 2012-03-11 12:17:34

+0

Apache编解码器库..我没有关于后者的选项。 XML中已经包含了图像,我只需要知道它。我想知道更多,有没有办法将XML中的数据传输到OutputStream上,而无需将整个数据保存为堆中的字符串? XML大小约为1.5MB。这是我应该担心的尺寸吗? – sethu 2012-03-11 12:42:08

+0

http://stackoverflow.com/a/1687218/14419 – 2012-03-11 12:53:37

回答

相关问题