我一直在使用Asp.Net开发一个Web应用程序,我正在使用SharpZipLib来处理odt文件(来自Open Office)和未来的docx文件(用于ms office)。我需要打开一个odt文件(比如一个zip文件)更改其中的xml文件,再次压缩并将其发送给我的客户端。
我可以在文件系统中执行此操作,但它会暂时在我的磁盘中获得一个空间,我们不希望它。我想在内存中(使用MemoryStream类)执行此操作,但我不知道如何使用SharpZipLib解压缩内存流中的文件夹/文件,更改并再次使用它进行压缩。有没有关于如何做到这一点的样本?
谢谢
答案 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