我有一個巨大的字符串,我需要在某處緩存,因爲我無法寫入文件,我唯一的選擇是將其作爲文本存儲在數據庫中,更多具體來說,在clob我有存儲JSON文件,我將壓縮的字符串放在該JSON對象的某個鍵下。壓縮一個字符串並將其作爲字符串存儲在數據庫中供以後解壓
我壓縮的字符串,但跨字符串操縱某處發生的事情,不允許我解壓縮數據,所以我想知道如果我應該將數據編碼到基礎64,但這將失去壓縮。
我能做些什麼來確保我可以將壓縮字符串存儲在數據庫中,以便以後可以取回它?
我不能更改數據庫,所以我堅持與CLOB場
這些都是我的壓縮功能:
public static String compress(String text) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
OutputStream out = new DeflaterOutputStream(baos);
out.write(text.getBytes("UTF-8"));
out.close();
} catch (IOException e) {
//ooops
}
return baos.toString();
}
public static String decompress(String bytes) {
InputStream in = new InflaterInputStream(new ByteArrayInputStream(bytes.getBytes()));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
byte[] buffer = new byte[8192];
int len;
while ((len = in.read(buffer)) > 0)
baos.write(buffer, 0, len);
return new String(baos.toByteArray(), "UTF-8");
} catch (IOException e) {
//ooops
}
}
A * cache *用於限制檢索數據所需的工作量,以提高性能。壓縮並將其存儲在CLOB中會看出與此目標不一致。至少在我看來這是如此。 –