问题标签 [gzipinputstream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在 servlet 中读取压缩请求
我在一项非常简单的任务中遗漏了一些东西:我必须检查传入的请求输入流是否已压缩并解压缩其内容。这不使用内容类型。我想过这样的事情:
检查请求是否被压缩:
如果它确实是 gziped,请解压缩它:
我的问题是 new GZIPInputStream(request.getInputStream()) 总是抛出“不是 gzip 格式”异常。我想念什么?
java - 使用“Range”标头时,无法让 Java 的 GZIPInputStream 从服务器读取“gzip”响应
我有一些代码我已经使用了一段时间来从 Web 服务器获取数据,几个月前,我添加了压缩支持,这似乎适用于整个文档所在的“常规”HTTP 响应包含在响应中。Range
不过,当我使用标题时,它似乎不起作用。
这是执行实际工作的代码:
用标头点击 URLAccept-Encoding: gzip,deflate,identity
效果很好:我可以看到服务器以压缩格式返回数据,上面的代码很好地解压缩了它。
如果我再添加一个Range: bytes=0-50
标题,我会得到以下异常:
511
我的代码中的行是包含调用in.read()
的行。响应包括以下标头:
我已经验证,如果我不尝试解压缩响应,我实际上会在响应中得到 51 个字节......这不是服务器故障(至少我可以说)。我的服务器(Apache httpd)不支持“deflate”,所以我不能测试另一个压缩方案(至少现在不行)。
我还尝试请求更多数据(例如目标资源中总共 751 个字节中的 700 个字节),但我得到了同样的错误。
有什么我想念的吗?
更新 对不起,我忘了包括我在 Linux 上点击 Apache/2.2.22。我不知道有任何服务器错误。我在验证从服务器检索的压缩字节时会遇到一些麻烦,因为“gzip”内容编码非常简单……例如,我相信我不能只在命令行上使用“gunzip”解压缩这些字节。不过,我会试一试。
java - 如何提高读取 tar.gz 文件夹中文件的性能?
我已成功读取 tar.gz 格式文件夹中的 pdf 文件。但我遇到了性能问题 - 需要更多时间来打开包含 1000 多个小型 pdf 文件的 tar.gz 文件夹,每个文件大小为 10 - 25 MB。文件夹的总大小为 2GB
如何提高解压文件读取的性能?
java - GZIP 吃换行符
我有以下用于压缩和解压缩字符串的代码。
我在windows上压缩成字节数组,然后通过socket将字节数组发送到linux并在那里解压缩。然而,在解压缩时,似乎我所有的换行符都消失了。
所以我认为问题是linux到windows的关系。但是,我尝试在使用它的 Windows 上编写一个简单的程序,发现换行符仍然消失了。
任何人都可以阐明是什么原因造成的吗?我想不出任何解释。
java - GZIPInputStream - 损坏的 GZIP 预告片
我有一个静态帮助方法,负责从我们的 Rails 应用程序中获取压缩的 JSON 字符串,并在返回String
表示之前解压缩数据。
我编写了两个 JUnit 测试,一个测试 JSON 是否正确解析,另一个更基本的测试确定是否从服务器返回长度大于零的字符串。
问题:当我运行测试套件时,第一个测试方法正常成功,另一个失败IOException
并显示消息“损坏的 GZIP 预告片”(参见下面的代码)。我已经确定不是测试本身失败了,因为当我导致测试以相反的顺序运行时,“成功”的测试会被逆转(换句话说,无论如何,总是第二个测试失败,无论两个测试中的哪个是第二个)。
这是辅助方法:
错误发生在辅助方法的底部,在 line 上while((line = reader.readLine()) != null)...
。具体来说,错误发生在reader.readLine()
.
以及两种测试方法:
我已经阅读了这个问题和答案,但我不相信它适用,(或者可能是这样,我误解了,如果是这样,请告诉我),我尝试了他们的方法,只收到了相同的信息。
由于该doHTTPGet
方法是静态的,并且创建的对象是在方法体内完成的,因此不应重用任何内容(流、连接对象等)。坦率地说,我很难过。
问题:我是否在帮助程序代码中做错了什么,或者我误解了某些对象的某些用法,这会产生“Corrupt GZIP Trailer”消息?简而言之,在我的场景中会导致此错误的原因是什么?
与往常一样,如果我在这个问题上遗漏了什么,请告诉我。
编辑
这是堆栈跟踪:
java - Base64数据的流解码
我有一些大型 base64 编码数据(存储在 hadoop 文件系统中的 snappy 文件中)。此数据最初是 gzip 压缩的文本数据。我需要能够读取这些编码数据的块,对其进行解码,然后将其刷新到 GZIPOutputStream。
关于如何执行此操作而不是将整个 base64 数据加载到数组中并调用 Base64.decodeBase64(byte[]) 的任何想法?
如果我读取字符直到 '\r\n' 分隔符并逐行解码,我是对的吗?例如:
可悲的是,这种方法没有提供任何人类可读的输出。理想情况下,我想流式读取、解码和流出数据。
现在,我正在尝试输入一个输入流,然后复制到一个 gzipout
它给了我一个 java.io.IOException: Corrupt GZIP 预告片
java - 如何使用 GZIPINPUT/GZIPOUTPUT 流将 .gz 文件下载到临时文件夹
我从 X 站点下载所有 gz 格式文件。当我精确到 0KB 时,将所有文件下载到 temp 文件夹后。请帮助我解决代码注释。代码中的任何更改
android - Android 上 GZIPInputStream 的截断输出
我一定做错了什么。在 Android 上运行以下代码会生成截断的文件 (_items_),而日志中没有任何异常或问题。使用 OpenJDK 7 运行相同的代码可以正确解压缩文件。
我已经在 Android 模拟器 (API 18) 和 Desire HD (Android 2.3.5) 上进行了尝试,结果相同。
输入文件(_items):https ://drive.google.com/file/d/0B6M72P2gzYmwaHg4SzRTYnRMOVk/edit?usp=sharing
Android 截断输出文件 (_items_):https ://drive.google.com/file/d/0B6M72P2gzYmwMUZIZ2FEaHNZUFk/edit?usp=sharing
gzipstream - 使用 C/C++ 在 Zlib 中压缩字符串
我想使用 C++(或 C)中的 gzip 来 gzip 字符串。如果可能,我想使用 zlib。
当我得知我必须使用 zlib 进行压缩和解压缩时,我在 Google 上搜索了几分钟,然后快速编写了一个程序来 gzip 文件,然后将其解压缩。但是,我实际上没有必要这样做。我需要使用 gzip 来压缩和解压缩字符串,而不是文件。我找不到太多关于在字符串上使用 gzip 的好文档。我发现的每个示例都适用于文件。
有人可以给我看一个简单的例子吗?
提前致谢。
java - GZIP压缩和解压
我正在使用以下代码压缩然后解压缩字符串。但是我在解压后得到了不同长度的字符串,解压后的字符串中也缺少几个字符。
压缩:
减压:
文本原始长度:45627 字节
文本压缩长度:3732 字节
文本未压缩长度:20328 字节(应等于原始长度)
我的原文是这样的:
而且我的解压缩文本就像(请参阅缺少开始标记,以及
谁能指出错误?或者这是预期的行为?