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

本文关键字:odt docx 文件 内存 解压缩 | 更新日期: 2023-09-27 18:15:20

我一直在用Asp开发一个web应用程序。我正在使用SharpZipLib与odt文件(来自Open Office)和未来的docx文件(用于ms Office)一起工作。我需要打开一个odt文件(像一个zip文件)改变里面的xml文件,再次压缩,并给它的浏览器发送到我的客户端。

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

谢谢

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

你可以使用

 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,更改,并在ZipOutputStream中写入MemoryStream。使用这篇文章http://www.codeproject.com/KB/cs/Zip_UnZip.aspx