2012-03-11 90 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

回答

相關問題