- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有 GZIPOutputStream 的实现可以在单独的线程中完成繁重的工作(压缩+写入磁盘)?
我们正在不断写入大量 GZIP 压缩数据。我正在寻找一个可以代替 GZIPOutputStream 的直接替代品。
最佳答案
您可以写入 PipedOutputStream 并有一个线程读取 PipedInputStream 并将其复制到您喜欢的任何流。
这是一个通用实现。您给它一个要写入的 OutputStream,它会返回一个要写入的 OutputStream。
public static OutputStream asyncOutputStream(final OutputStream out) throws IOException {
PipedOutputStream pos = new PipedOutputStream();
final PipedInputStream pis = new PipedInputStream(pos);
new Thread(new Runnable() {
@Override
public void run() {
try {
byte[] bytes = new byte[8192];
for(int len; (len = pis.read(bytes)) > 0;)
out.write(bytes, 0, len);
} catch(IOException ioe) {
ioe.printStackTrace();
} finally {
close(pis);
close(out);
}
}
}, "async-output-stream").start();
return pos;
}
static void close(Closeable closeable) {
if (closeable != null) try {
closeable.close();
} catch (IOException ignored) {
}
}
关于java - GZIPOutputStream 在单独的线程中进行压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12532073/
是否有 GZIPOutputStream 的实现可以在单独的线程中完成繁重的工作(压缩+写入磁盘)? 我们正在不断写入大量 GZIP 压缩数据。我正在寻找一个可以代替 GZIPOutputStream
我对 GZIPOutputStream 有一个非常奇怪的问题压缩 double 组时。在第 57 个元素处,当我重新加载数据时出现了一个小差异: 57 > 3.003727492141554E7 3.
我正在 AppEngine 上编写一个 java servlet。此 servlet 生成 png 图像。我想“压缩”响应。我这样做: resp.setHeader("Content-Encoding
我试过搜索但找不到任何东西。我想要做的是循环遍历一个列表,在该列表中我从多个列表中的项目组合构造一个字符串。然后我想将这些字符串转储到 gzip 文件中。我只是将它转储到一个普通的 ascii 文本文
以下代码生成两个字符串的确定性文件(shasum 相同)。 try( FileOutputStream fos = new FileOutputStream(saveL
我正在使用 GZIPOutputStream 以异步方式将压缩数据写入磁盘 我想知道已经写入的数据大小,以便在达到限制后关闭文件 ByteBuffer src; //.. //data added t
我尝试过 gzip 一个大的(100mb 到 500mb)xml 文件。我已经创建了方法 Zip 来做到这一点。问题是它的 zip 时间太多了。对于 200mb 的文件,需要 1.2 秒。对于 100
我想压缩我的字符串值。这些字符串值应与 .net 压缩字符串相同。 我写了Decompress 方法,当我向它发送一个.net 压缩字符串时,它工作正常。但是 Compress 方法无法正常工作。 p
我正在用 Java 开发一个带有套接字的小型网络服务器。我让它像 HTTP 一样工作,使用 Connection: keep-alive 等等。现在,我想压缩 (GZIP) 发送的数据。 为了确保遵守
我正在编写一个简单的 Java http 服务器,它用 JSON 数据进行响应。我试图在发送数据之前对数据进行 GZip 压缩,但它通常会发回在浏览器中产生错误的 gzip 数据。例如,在 Firef
我的应用程序正在将大量视频和 i2c 传感器数据记录到磁盘文件中 - 尽可能快。目前我正在将所有内容转换为字节,并使用 BufferedOutputStream 进行写入。 @Siguza 非常友善地
有人知道为什么创建 gzip 字符串的代码不起作用吗? Mac 上的 CLI gzip 无法打开生成的文件:“不是 gz 格式”。 请注意:我需要字符串,而不是文件。直接创建 gzip 压缩文件是可行
在this thread的帮助下我能够编写一个 decompress() 和一个 compress() 函数。我的程序接收压缩形式的数据,对其进行扩充,有时修改它,然后再次重新压缩并发送它。经过几个小
我正在尝试将一系列 Long 写入 GZIPOutputStream,希望稍后能解压缩这些数字。 当我尝试使用少量 Long 时,以下程序运行良好,但使用许多 Long 时会抛出异常,例如 (1024
要检索通过 gzip 压缩的文件的未压缩大小,您可以读取最后四个字节。我这样做是为了看看是否有任何文件的大小不符合其应有的大小。如果文件小于应有的大小,我使用以下代码附加到文件: GZIPOutput
我有一个遗留系统,服务器在数周内缓慢更新。层次结构是这样的: 1 2 3 4 5 1 is the client pc 2 is a master server 3 4 and 5 are serve
我们正在开发一个需要刷新(强制压缩和发送数据)GZIPOutputStream 的程序。问题是,GZIPOutputStream 的 flush 方法没有按预期工作(强制压缩和发送数据),而是 Str
GZIPOutputStream 只是 DeflaterOutputStream 的子类,但两者都可以实例化。我什么时候用一个而不是另一个?压缩率一样吗? 最佳答案 DeflaterOutputStr
谁能推荐我是否应该这样做: os = new GzipOutputStream(new BufferedOutputStream(...)); 或 os = new BufferedOutputStr
我有一个 BufferedWriter 如下所示: BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
我是一名优秀的程序员,十分优秀!