在许多在线示例中,使用编码缓冲区在Java中压缩/解压文件。然而,使用NIO,无需选择好的缓冲区大小。我找到了文件和套接字的示例,但是否有用于压缩输入(例如GZIPInputStream
)的NIO通道,因此您可以只使用transferFrom
而不是自己创建byte[]
缓冲区?
FileChannel fc =
new RandomAccessFile("input.gz", "r").getChannel();
ReadableByteChannel gzc =
Channels.newChannel(
new GZIPInputStream(
Channels.newInputStream(fc)));
没有专门的ZIP通道存在...
我认为你可以这样做:使用NIO从任何你想要的通道读取到缓冲区中,然后将刚刚读取的字节从缓冲区中检索出来,将这些字节包装到ByteArrayInputStream中并将其传递给ZIPInputStream。
transferFrom
方法来实际复制数据,这正是我正在寻找的.. - tb189