解压缩内存流中的文件(odt或docx)

时间:2011-11-22 12:11:40

标签: c# asp.net zip openoffice.org sharpziplib

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

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

谢谢

1 个答案:

答案 0 :(得分: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();

}

编辑::

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