以不定长字节序列的方式压缩一个文件,采用什么算法比较好?

lingengbin 发布于 2014/10/14 10:17
阅读 335
收藏 0

需要对一个大文件进行压缩,这个大文件文件是通过网络进行接收的。

需求是:服务器先收到多少字节就先对这些字节进行压缩,写入另外一个压缩文件。

这里的字节将会是不定长的,有时候多,有时候少(因为是通过网络传输的)。

并且解压缩的时候也能按不定长的方式解压缩,返回给客户端。

请问我该选用什么算法?

之所以有这个需求是因为:把一整个文件接收完全再进行压缩的话会导致一个OutOfMemory(如果文件很大的话)。

或者如果你有更好的避免内存溢出的方法,请告诉我,这样我们就可以避免一个X-Y Problem,谢谢^_^....

加载中
0
h
hao5ang

将整个文件接收之后压缩是不是没有使用缓存?要不然不会出现内存溢出的情况:

FileInputStream fin = new FileInputStream("archive.tar.gz");
BufferedInputStream in = new BufferedInputStream(fin);
FileOutputStream out = new FileOutputStream("archive.tar");
GZipCompressorInputStream gzIn = new GZipCompressorInputStream(in);
final byte[] buffer = new byte[buffersize];
int n = 0;
while (-1 != (n = gzIn.read(buffer))) {
    out.write(buffer, 0, n);
}
out.close();
gzIn.close();



http://commons.apache.org/proper/commons-compress/examples.html

0
削你
削你
RLE算法
0
Feng_Yu
Feng_Yu
管道压缩
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部