Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IOUtils.copyLarge不适用于压缩输入_Java_Scala_Gzip_Inputstream - Fatal编程技术网

Java IOUtils.copyLarge不适用于压缩输入

Java IOUtils.copyLarge不适用于压缩输入,java,scala,gzip,inputstream,Java,Scala,Gzip,Inputstream,我正在尝试使用IOUtils.copyragle传输gzip文件。当我从gzip输入流传输到非压缩输出时,它工作正常,但当我传输原始输入流(试图保持压缩)时,最终结果是0字节 我已验证输入文件是否正确。下面是一个有效的例子 IOUtils.copyragle(新的gzip输入流(输入流),输出) 这当然会导致写入未压缩的文件。我想保持文件压缩,因为它是在原始输入 当我尝试val countBytes=IOUtils.copylagle(inputStream,out)时,结果为0,结果文件为空。

我正在尝试使用
IOUtils.copyragle
传输gzip文件。当我从
gzip输入流
传输到非压缩输出时,它工作正常,但当我传输原始输入流(试图保持压缩)时,最终结果是0字节

我已验证输入文件是否正确。下面是一个有效的例子

IOUtils.copyragle(新的gzip输入流(输入流),输出)

这当然会导致写入未压缩的文件。我想保持文件压缩,因为它是在原始输入

当我尝试
val countBytes=IOUtils.copylagle(inputStream,out)
时,结果为0,结果文件为空。理想的结果是将已经压缩的gzip文件复制到一个新的目标,以保持压缩


阅读API的文档,我应该正确地使用它。关于是什么阻碍了它的工作,你有什么想法吗?

我怀疑你很难做出正确的判断,但你的故事仍然不符合逻辑。如果你在代码中的同一个位置用
val countBytes=IOUtils.copyLarge(inputStream,out)
替换
val countBytes=IOUtils.copyLarge(new GZIPInputStream(inputStream),out)
,前者返回
0
,而后者返回一些非
0
?很难相信这种行为。我的最佳理论是,在进入
copyragle
之前,您实际上已经阅读了整个
inputStream
。您能否在复制之前记录
.available()
.read()
调用的结果?这有助于诊断问题,您的理论也很接近。我以前一直在逐行复制,所以仍然使用相同的InputStream打开了InputStreamReader。一旦我删除了这句话,一切都按预期进行了。我怀疑你很难做出正确的判断,但你的故事仍然不合情理。如果你在代码中的同一个位置用
val countBytes=IOUtils.copyLarge(inputStream,out)
替换
val countBytes=IOUtils.copyLarge(new GZIPInputStream(inputStream),out)
,前者返回
0
,而后者返回一些非
0
?很难相信这种行为。我的最佳理论是,在进入
copyragle
之前,您实际上已经阅读了整个
inputStream
。您能否在复制之前记录
.available()
.read()
调用的结果?这有助于诊断问题,您的理论也很接近。我以前一直在逐行复制,所以仍然使用相同的InputStream打开了InputStreamReader。一旦我去掉那条线,一切都按预期进行。