解压缩内存流中的文件(odt或docx)
本文关键字:odt docx 文件 内存 解压缩 | 更新日期: 2023-09-27 18:15:20
我一直在用Asp开发一个web应用程序。我正在使用SharpZipLib与odt文件(来自Open Office)和未来的docx文件(用于ms Office)一起工作。我需要打开一个odt文件(像一个zip文件)改变里面的xml文件,再次压缩,并给它的浏览器发送到我的客户端。
我可以在文件系统中这样做,但它会暂时占用我的磁盘空间,我们不需要它。我想在内存中这样做(使用MemoryStream类),但我不知道如何在内存流中解压缩文件夹/文件SharpZipLib,更改并使用它再次压缩。有关于如何做的样本吗?
谢谢
你可以使用
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