我打开一个zip文件时遇到问题。我使用此代码压缩文件:
public static string Zip_File(string soruce , string target)
{
try
{
byte[] bufferWrite;
using (FileStream fsSource = new FileStream(soruce, FileMode.Open, FileAccess.Read, FileShare.Read))
{
bufferWrite = new byte[fsSource.Length];
fsSource.Read(bufferWrite, 0, bufferWrite.Length);
using (FileStream fsDest = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))
{
using (GZipStream gzCompressed = new GZipStream(fsDest, CompressionMode.Compress, true))
{
gzCompressed.Write(bufferWrite, 0, bufferWrite.Length);
bufferWrite = null;
fsSource.Close();
gzCompressed.Close();
fsDest.Close();
}
}
}
return "success";
}
catch (Exception ex)
{
return ex.Message;
}
}
当我调用此函数时,我收到“成功”消息,但我无法打开zip文件。这是我的函数调用代码:
ZipFiles.Zip_File(@"C:\Documents and Settings\ccspl\Desktop\IntegrityDVR.mdb", @"C:\Documents and Settings\ccspl\Desktop\a.zip")
这是我收到的错误消息:
压缩(文件夹)无效或已损坏
GZipStream
不会创建.zip
文件。它创建.gz
文件。如果你需要创建.zip
文件,你应该使用像SharpZipLib这样的东西。
但是,等一下,GZipStream不会创建zip文件,它会创建gzip文件,我知道,Zipping files using GZipStream应该有所帮助
为什么不使用SharpZipLib?它使这更容易。
DotNetZip的示例代码,一个开源的zip库。
public static string ZipFile(String source, String target)
{
try
{
using (ZipFile zip = new ZipFile()
{
zip.AddFile(source);
zip.Save(target);
}
return "success";
}
catch {}
return "failure";
}