Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么压缩流的长度总是10?_C#_Gzipstream - Fatal编程技术网

C# 为什么压缩流的长度总是10?

C# 为什么压缩流的长度总是10?,c#,gzipstream,C#,Gzipstream,我正在测试一些代码。我被以下问题困住了。无论我写什么文本,压缩流的长度总是10?我做错了什么 var inStream = new MemoryStream(); var inWriter = new StreamWriter(inStream); str text = "HelloWorldsasdfghj123455667880fgsjfhdfasdferrbvbyjun hbwecwcxqsz edcrgvebrjnuj5juerqwetsrgfggshurhtnbvzkfjhg

我正在测试一些代码。我被以下问题困住了。无论我写什么
文本
,压缩流的长度总是10?我做错了什么

var inStream = new MemoryStream();

var inWriter = new StreamWriter(inStream);

str text = "HelloWorldsasdfghj123455667880fgsjfhdfasdferrbvbyjun hbwecwcxqsz    edcrgvebrjnuj5juerqwetsrgfggshurhtnbvzkfjhguhgrgal;kjhao;rhl;zkfhg;aorihghg;oahrgarhguhh';aaeaeiaijeihjrhfidfhfidfidhh953453453";
inWriter.WriteLine(text);

inWriter.Flush();
inStream.Position = 0;

var outStream = new MemoryStream();
var compressStream = new GZipStream(outStream, CompressionMode.Compress);
inStream.CopyTo(compressStream);

compressStream.Flush();
outStream.Flush();
compressStream.Flush();

outStream.Position = 0;

Console.WriteLine(outStream.Position);
Console.WriteLine(outStream.Length);

直到您关闭它,压缩流才知道您已经完成了对它的写入,因此无法完成其压缩算法。刷新会刷新它可以刷新的部分,但在它被告知您已完成添加新字节之前,它无法刷新其最后一个压缩数据包。

@MethodMan目前我没有关闭任何内容。不应该是这样,但是@MethodMan是正确的-直到你关闭它,压缩流才知道你已经完成了对它的写入-因此无法完成它的压缩算法。@PhillipH使用并保持打开状态,现在它工作了。我正要发布一个自我回答。相反,您可以将您的评论作为答案发布。注意:如果您想在之后使用结果流,您需要像这样使用它:GZipStream(outStream,CompressionMode.Compress,true)