1 回答
TA贡献1998条经验 获得超6个赞
据我现在的理解,这个问题是无关紧要的。我想要的是一种压缩数据的方法,因为我的内存无法处理它。但现在我意识到,我应该做的不是那样,而是分块读取文件,所以压缩与否并不重要。这是怎么做的:
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
}
至于压缩函数,如果有人想要的话,可以使用由tonyking97编写的这个很棒的LZW 压缩算法,基本上你必须将字节数组转换为字符串,然后通过这个压缩函数传递它。它可以工作,但是对于大字节数组来说速度很慢。
当然,为了再次写入文件,我们必须使用而FileOutputStream
不是FileInputStream并说outputStream.write(byte[], int, int)
. 希望这会对某人有所帮助:)
添加回答
举报