我有以下方式將文件轉換爲字節數組,而不是字符串和返回。更有效的方法將文件轉換爲字節數組以字符串並返回
InputStream is = new FileInputStream(new File("c:/original.png"));
String temp = Hex.encodeHexString(IOUtils.toByteArray(is));
System.out.println(temp);
byte[] b = Hex.decodeHex(temp .toCharArray());
OutputStream out = new FileOutputStream(new File("c:/copy.png"));
IOUtils.write(b, out);
它工作正常。問題是temp
字符串的大小。如果c:/original.png
文件是1523KB
比temp
大小是3046KB
。是否有更有效的方式將文件轉換爲不會使文件大小加倍的字符串? (順便說一句我明白爲什麼它是關於大小的兩倍)
另外,我怎麼會去壓縮temp
字符串?
至於字符串的原因。它被存儲在只需要字符串的緩存中。該文件實際上傳到Web服務器。一旦上傳即將被下載,它將從緩存而不是數據庫中提取。而且緩存可以通過預測來改善搜索性能,我不希望每次搜索時都調用數據庫。
請您澄清*爲什麼*您需要將二進制數據存儲在'String'中? – NPE
爲什麼你想要它作爲一個字符串?它只是在屏幕上呈現嗎? –
你甚至需要十六進制編碼的字符串嗎?如果不是,則跳過該步驟直接使用字節數組。 – millimoose