0

我一直在使用 Asp.Net 开发 Web 应用程序,并且正在使用 SharpZipLib 处理 odt 文件(来自 Open Office)和未来的 docx 文件(用于 ms office)。我需要打开一个 odt 文件(如 zip 文件)更改其中的 xml 文件,再次压缩并将其提供给浏览器发送给我的客户端。

我可以在文件系统中执行此操作,但它会暂时在我的磁盘中获得空间,我们不想要它。我想在内存中执行此操作(使用 MemoryStream 类),但我不知道如何使用 SharpZipLib 解压缩内存流中的文件夹/文件,更改并使用它再次压缩。有没有关于如何做到这一点的样本?

谢谢

4

1 回答 1

0

你可以使用类似的东西

 Stream inputStream = //... File.OpenRead(...);

  //for read file
 ZipInputStream zipInputStream = new ZipInputStream(inputStream));

 //for output 
 MemoryStream memoryStream  = new MemoryStream();



using ( ZipOutputStream zipStream = new ZipOutputStream(memoryStream))
{




          ZipEntry entry = new ZipEntry("...");
          //...

          zipStream.PutNextEntry(entry);
          zipStream.Write(data, 0, data.Length);
          //...


          zipStream.Finish();
          zipStream.Close();

}

编辑 ::

通常,您需要解压缩文件,获取 ZipEntry ,更改并使用 MemoryStream 在 ZipOutputStream 中写入。使用这篇文章http://www.codeproject.com/KB/cs/Zip_UnZip.aspx

于 2011-11-22T12:16:45.933 回答