1 回答

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
據(jù)我現(xiàn)在的理解,這個(gè)問題是無關(guān)緊要的。我想要的是一種壓縮數(shù)據(jù)的方法,因?yàn)槲业膬?nèi)存無法處理它。但現(xiàn)在我意識(shí)到,我應(yīng)該做的不是那樣,而是分塊讀取文件,所以壓縮與否并不重要。這是怎么做的:
try {
? ? File file = new File("myFile");
? ? FileInputStream is = new FileInputStream(file);
? ? byte[] chunk = new byte[1024];
? ? int chunkLen = 0;
? ? while ((chunkLen = is.read(chunk)) != -1) {
? ? ? ? // your code..
? ? }
} catch (FileNotFoundException fnfE) {
? ? // file not found, handle case
} catch (IOException ioE) {
? ? // problem reading, handle case
}
至于壓縮函數(shù),如果有人想要的話,可以使用由tonyking97編寫的這個(gè)很棒的LZW 壓縮算法,基本上你必須將字節(jié)數(shù)組轉(zhuǎn)換為字符串,然后通過這個(gè)壓縮函數(shù)傳遞它。它可以工作,但是對(duì)于大字節(jié)數(shù)組來說速度很慢。
當(dāng)然,為了再次寫入文件,我們必須使用而FileOutputStream
不是FileInputStream并說outputStream.write(byte[], int, int)
.?希望這會(huì)對(duì)某人有所幫助:)
添加回答
舉報(bào)