.NET Framework 4.5通过.NET中的类添加了对ZIP文件的支持System.IO.Compression
。
假设我有.ZIP存档,sample.xml
其根目录中有文件。我想直接从存档读取此文件到内存流,然后将其反序列化为自定义.NET对象。做这个的最好方式是什么?
改编自ZipArchive
和XmlSerializer.Deserialize()
手册页。
的ZipArchiveEntry
类有一个Open()
方法,它返回一个流至该文件。
string zipPath = @"c:\example\start.zip";
using (ZipArchive archive = ZipFile.OpenRead(zipPath))
{
var sample = archive.GetEntry("sample.xml");
if (sample != null)
{
using (var zipEntryStream = sample.Open())
{
XmlSerializer serializer = new XmlSerializer(typeof(SampleClass));
SampleClass deserialized =
(SampleClass)serializer.Deserialize(zipEntryStream);
}
}
}
请注意,如MSDN上所述,您需要添加对.NET程序集的引用System.IO.Compression.FileSystem
才能使用ZipFile
该类。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句