有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用NIO的java(反)压缩文件

在许多在线示例中,文件是使用编码缓冲区在java中进行(反)压缩的。然而,对于NIO,没有必要选择好的缓冲区大小。我找到了文件和socket的示例,但是是否有用于压缩输入(例如GZIPInputStream)的NIO通道,所以您可以使用transferFrom而不是自己创建byte[]缓冲区


共 (2) 个答案

  1. # 1 楼答案

    可以在java中使用静态实用程序方法。尼奥。频道。通道将流包装在通道中,反之亦然

    例如,要创建一个通道,从中可以从gzip压缩文件中读取未压缩的数据:

    FileChannel fc = 
        new RandomAccessFile("input.gz", "r").getChannel();
    
    ReadableByteChannel gzc = 
        Channels.newChannel(
                new GZIPInputStream(
                        Channels.newInputStream(fc)));
    
  2. # 2 楼答案

    不,还没有专门的ZIP频道。。。 我认为你可以做到以下几点。使用NIO读取要缓冲的任何通道。然后检索刚刚从缓冲区读取到字节数组的字节,使用ByteArrayInputStream包装数组,并将其传递给ZIPInputStream