我正在使用C#的GZipStream类来压缩一些输入数据,但问题是当输入为空时,它会创建一个0字节的文件。在这种情况下,如果我尝试使用7zip来解压缩生成的.gz文件,它会报错并提示格式无效。如果我的输入不为空,那么它就可以正常工作。请告诉我如何创建一个有效的.gz文件,以便解压缩成一个0字节的文件?
在上面的代码中,如果我的“input”数组为空,则最终会写入一个名为foo.txt.gz的0字节文件,并且7zip会提示该文件无效。但是如果我有一个非空数组,则可以获得有效的文件。请告诉我如何修改我的代码以解决这个问题,即使输入为空也能得到有效的.gz文件。谢谢!
编辑:这可能是.NET中的一个错误。如果您注意到相同的问题并同意这是一个错误,请在以下链接上投票: https://connect.microsoft.com/VisualStudio/feedback/details/888912/gzipstream-creates-invalid-gz-files-when-input-is-empty
var file = new FileStream("foo.txt.gz", FileMode.Create, FileAccess.ReadWrite);
var gzip = new GZipStream(file, CompressionMode.Compress);
var writer = new StreamWriter(gzip);
for (string line in input) {
writer.Write(line);
}
writer.Close();
gzip.Close();
file.Close();
在上面的代码中,如果我的“input”数组为空,则最终会写入一个名为foo.txt.gz的0字节文件,并且7zip会提示该文件无效。但是如果我有一个非空数组,则可以获得有效的文件。请告诉我如何修改我的代码以解决这个问题,即使输入为空也能得到有效的.gz文件。谢谢!
编辑:这可能是.NET中的一个错误。如果您注意到相同的问题并同意这是一个错误,请在以下链接上投票: https://connect.microsoft.com/VisualStudio/feedback/details/888912/gzipstream-creates-invalid-gz-files-when-input-is-empty