【发布时间】:2010-10-05 13:27:37
【问题描述】:
我正在尝试在 C# 中使用 deflate/gzip 流,但压缩后的文件似乎比以前大。
例如,我压缩了一个 900ko 的 docx 文件,但它产生了一个 1.4Mo 的文件!
它对我尝试的每个文件都执行此操作。
我做这件事的方式可能是错的吗?这是我的代码:
FileStream input = File.OpenRead(Environment.CurrentDirectory + "/file.docx");
FileStream output = File.OpenWrite(Environment.CurrentDirectory + "/compressedfile.dat");
GZipStream comp = new GZipStream(output, CompressionMode.Compress);
while (input.Position != input.Length)
comp.WriteByte((byte)input.ReadByte());
input.Close();
comp.Close(); // automatically call flush at closing
output.Close();
【问题讨论】:
-
您确实意识到将任意输入压缩至少一个字节的压缩方法不存在?因此,特别是如果您正在尝试压缩已经接近随机的数据,例如预压缩数据,您可能会看到大小增加。
-
.docx 已使用 ZIP 压缩进行压缩(尝试重命名为 .zip 并进行探索)。如果第二级压缩会产生任何好处,我会感到惊讶。
-
它应该只在刷新时有效地进行压缩,所以它不应该改变任何东西
-
@spender > 不知道,我会尝试使用其他文件格式
-
您是否尝试过压缩 .txt 文件?
标签: c# gzipstream deflatestream