我正在使用SharpCompress(http://sharpcompress.codeplex.com/)压缩和解压缩文件:
public void compressZip(string in, string out)
{
try
{
using (var archive = ZipArchive.Create())
{
archive.AddEntry(file2Compressed, new FileInfo(int));
var fs= new FileStream(file2Saved, FileMode.CreateNew);
archive.SaveTo(memoryStream, CompressionType.Deflate);
}
using (Stream stream = File.OpenRead(out))
using (var reader = ZipReader.Open(stream))
{
if(!reader.Entry.IsDirectory)//exception here
using (Stream newStream = File.Create("123" + in))
reader.WriteEntryTo(newStream);
}
}
catch (Exception ex)
{
Console.WriteLine("Ex: " + ex.Message);
}
}
我在以下地方遇到了一个例外:“这里的例外”,引用不是对象……我不知道为什么会这样。任何的想法?
提前致谢。
最佳答案
您没有呼叫reader.MoveToNextEntry()
,因此读者在“第一个条目之前”。您应该使用类似以下内容的东西:
using (Stream stream = File.OpenRead(out))
using (var reader = ZipReader.Open(stream))
{
while (reader.MoveToNextEntry())
{
if (!reader.Entry.IsDirectory)
{
using (Stream newStream = File.Create("123" + in))
{
reader.WriteEntryTo(newStream);
}
}
}
}
关于c# - 使用SharpCompress解压缩文件时出现异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9491712/