我试图用C#代码压缩我的文件,但它显示ZipFile类不存在.请建议如何使用C#进行压缩,我使用的是Framework 4.5
我的代码写在下面
using System;
using System.IO;
using System.IO.Compression;
namespace ZipSample
{
class Program
{
static void Main(string[] args)
{
string[] MainDirs = Directory.GetDirectories("c:\\users\\public\reports");
for (int i = 0; i < MainDirs.Length; i++)
{
using (ZipFile zip = new ZipFile())
{
zip.UseUnicodeAsNecessary = true;
zip.AddDirectory(MainDirs[i]);
zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
zip.Comment = "This zip was created at " + System.DateTime.Now.ToString("G");
zip.Save(string.Format("test{0}.zip", i));
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
解决方案1:
这是因为你试图实现一个静态类.
using System.IO.Compression;
...
string startPath = @"c:\example\start";
string zipPath = @"c:\example\result.zip";
string extractPath = @"c:\example\extract";
ZipFile.CreateFromDirectory(startPath, zipPath);
ZipFile.ExtractToDirectory(zipPath, extractPath);
Run Code Online (Sandbox Code Playgroud)
修复此问题后,我的代码似乎对我有用.
从文档:
提供用于创建,提取和打开zip存档的静态方法.
更多信息:https://msdn.microsoft.com/en-us/library/system.io.compression.zipfile%28v=vs.110%29.aspx
解决方案2:
这是因为你混合了Ionic库代码和.Net库引用.如果你想坚持下去,你应该下载库并将其作为参考而不是.Net库添加.
该库及其文档可在此处找到:http://dotnetzip.herobo.com/DNZHelp/Index.html 或 http://dotnetzip.codeplex.com/
以下是从文档中获取的快速示例(在上面链接中下载的库zip中找到):
string ZipFileToCreate = @"C:\Temp\Test.zip";
string DirectoryToZip = @"C:\Temp\FolderToZip\";
try
{
using (ZipFile zip = new ZipFile())
{
zip.StatusMessageTextWriter = System.Console.Out;
zip.AddDirectory(DirectoryToZip); // recurses subdirectories
zip.Save(ZipFileToCreate);
}
}
catch (System.Exception ex1)
{
System.Console.Error.WriteLine("exception: " + ex1);
}
Run Code Online (Sandbox Code Playgroud)