【发布时间】:2011-02-14 22:36:05
【问题描述】:
我正在使用 GZIPStream 和 MemoryStream 压缩一个 CSV 文件,并注意到结果文件有些奇怪。似乎 CSV 没有被正确识别。这会显示文件何时附加到电子邮件,但在保存在 Windows 桌面上时可以正常工作。
这是当前处理 gzip 部分的 sn-p:
GZipStream gStream = null;
MemoryStream mStream = null;
MemoryStream mStream2 = null;
try
{
if (attachment.Length > 0)
{
mStream = new MemoryStream();
gStream = new GZipStream(mStream, CompressionMode.Compress);
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(attachment.ToString());
gStream.Write(bytes, 0, bytes.Length);
gStream.Close();
mStream2 = new MemoryStream(mStream.ToArray());
Attachment emailAttachement = new Attachment(mStream2, "myGzip.csv.gz", "application/x-Gzip");
mailMessage.Attachments.Add(emailAttachement);
}
}
【问题讨论】:
-
什么显示?什么表现出乎意料?代码是什么样的? 什么?如果您使用的是内存流,那么 rsult [sic] 文件是什么?
-
顺便说一句,如果我不得不瞎猜的话:在你调用内存流上的 ToArray() 之前,gzip 流还没有关闭
-
我包含了代码。我们注意到的是,当 GZIP 文件打开时(当附加到电子邮件时),压缩文件不是 .csv 文件(不知何故)。
标签: c# .net memorystream gzipstream