Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#.NET 4.5将文件从ZIP归档文件读取到内存,而不首先将其解压缩到文件?_C#_.net_Zip_Archive - Fatal编程技术网

如何使用C#.NET 4.5将文件从ZIP归档文件读取到内存,而不首先将其解压缩到文件?

如何使用C#.NET 4.5将文件从ZIP归档文件读取到内存,而不首先将其解压缩到文件?,c#,.net,zip,archive,C#,.net,Zip,Archive,.NET Framework 4.5通过System.IO.Compression中的类添加了对ZIP文件的支持 假设我有.ZIP归档文件,它的根目录中有sample.xml文件。我想将这个文件直接从归档文件读取到内存流,然后将其反序列化到自定义.NET对象。执行此操作的最佳方法是什么?改编自和手册页面 ZipArchiveEntry类有一个Open()方法,该方法将流返回到文件 string zipPath = @"c:\example\start.zip"; using (ZipArchi

.NET Framework 4.5通过
System.IO.Compression
中的类添加了对ZIP文件的支持

假设我有.ZIP归档文件,它的根目录中有
sample.xml
文件。我想将这个文件直接从归档文件读取到内存流,然后将其反序列化到自定义.NET对象。执行此操作的最佳方法是什么?

改编自和手册页面

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);
        }
    }
} 
注意,为了使用
ZipFile
类,您需要添加对.NET程序集
System.IO.Compression.FileSystem
的引用