【发布时间】:2017-03-19 13:49:21
【问题描述】:
我正在遵循类似于下面的代码。环顾不同的实现,似乎大多数人通过执行字节复制来执行相同的操作。是否有更快的方法来处理从文件膨胀并打印回文件?
public static String unzipString(InputStream in) {
try {
int length = (int) in.readUBits( 16 );
// Add extra byte to array when Inflater is set to true
byte[] data = in.read( length );
ByteArrayInputStream bin = new ByteArrayInputStream(input);
InflaterInputStream in = new InflaterInputStream(bin);
FileoutputStream bout = new FileoutputStream(this.file);
int b;
while ((b = in.read()) != -1) {
bout.write(b);
}
bout.close();
} catch (IOException io) {
return null;
}
}
【问题讨论】:
-
您的代码看起来很别扭。我想知道它是否会编译。
-
这不是我的代码。这是我从谷歌中提取的一个例子。与上面给出的按字节写入的输出类似。我的文件很大,每个文件似乎需要 2 分钟才能写入,其中每个压缩文件为 1600KB,未压缩文件为 26MB。写入字节的输出流似乎是帐篷里的长杆。
-
该代码非常糟糕。您应该尝试另一个示例。我无法改善已经倒塌的房子。
-
很公平。有没有一种简单的解决方案,使用 Inflate 对压缩文件进行充气而不需要手动字节复制?
-
我猜不是。只要是纯Java,就得做字节拷贝。即使它看起来避免直接字节复制,它实际上在你没有注意到的地方使用它。唯一的改进是使用缓冲区复制多个字节,通常大小为几千字节,而不是一次复制一个
标签: java compression inflate