我有一个要求,需要读写压缩的(GZIP)流,但不需要中间存储。目前,我使用Spring的
现在,我想切换到使用Spring 5 WebClient (只是因为我不喜欢现状)。然而,
另请参见Reactor Nettyissue-251。
还与Spring集成相关的问题issue-2300。
我承认对(解)压缩不太熟悉,但是我做了调查,但在网上找到的所有材料似乎都没有什么帮助。
在Java NIO直接缓冲区上进行压缩compression on java nio direct buffers。
使用NIO编写GZIP文件Writing GZIP file with nio。
从FileChannel中读取GZIP文件(Java NIO)Reading a GZIP file from a FileChannel (Java NIO)。
使用NIO进行(解)压缩文件(de)compressing files using NIO。
Java中可迭代gzip解压缩Iterable gzip deflate/inflate in Java。
RestTemplate
进行写入操作,使用Apache HTTP客户端进行读取操作(有关为什么不能使用RestTemplate
读取大型流的说明,请参见此处)。实现相当简单,我将GZIPInputStream
放在响应InputStream
上并继续处理。现在,我想切换到使用Spring 5 WebClient (只是因为我不喜欢现状)。然而,
WebClient
的反应性质是与Flux<Stuff>
打交道;我相信它可以获得Flux<DataBuffer>
,其中DataBuffer是对ByteBuffer
的抽象。问题是,在不必将完整流存储在内存中(OutOfMemoryError
, 我看着你),或写入本地磁盘情况下如何即时解压缩?值得一提的是,WebClient
在内部使用Netty。另请参见Reactor Nettyissue-251。
还与Spring集成相关的问题issue-2300。
我承认对(解)压缩不太熟悉,但是我做了调查,但在网上找到的所有材料似乎都没有什么帮助。
在Java NIO直接缓冲区上进行压缩compression on java nio direct buffers。
使用NIO编写GZIP文件Writing GZIP file with nio。
从FileChannel中读取GZIP文件(Java NIO)Reading a GZIP file from a FileChannel (Java NIO)。
使用NIO进行(解)压缩文件(de)compressing files using NIO。
Java中可迭代gzip解压缩Iterable gzip deflate/inflate in Java。
asInputStream()
方法并将其放入GZIPInputStream
中是否无法正常工作? - vandale