我解析了一個具有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