将Base64编码的数据从XML保存到文件中

时间:2012-03-11 11:48:48

标签: java xml base64

我正在解析具有Base64编码图像的XML。我想提取图像并解析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作为String并将字符串传递给此方法。然后,我使用Apache编解码器库解码Base64编码数据并存储到文件中。

这是最好的方法吗?这不是非常快。它在大约2s结束。有没有更快,更有效的方法呢?

在下面的评论中更新 - 有没有办法将XML中的数据直接传输到OutputStream并只解码内存中的缓冲区?这是一种更有效的内存处理方式吗?或者,当XML大小最大为2.5 MB时,这是否重要。

1 个答案:

答案 0 :(得分:2)

文档的其余部分怎么样?你想丢弃吗?

如果是,那么请看一下STAX(XML的流式API):

http://docs.oracle.com/javase/7/docs/api/javax/xml/stream/package-summary.html

它是Java SE 6的一部分。

如果您还要解析文档的其余部分,请考虑使用自定义绑定的JAXB。