用C#压缩文件

SMT*_*SMT 1 c#

我试图用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)

在此输入图像描述

And*_*y M 5

解决方案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.htmlhttp://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)

  • 另请注意,这可能是因为他试图将Ionic ZipFile用作.NET ZipFile.整个例子都是错的. (2认同)