如何在VB.NET中压缩文件/目录?

时间:2015-05-05 03:34:50

标签: c# .net vb.net zip

我想在VB.NET中压缩包含文件和子文件夹的文件夹。我的解决方案针对.NET 4.0 Client Profile。

我看到.NET 4.5有一个ZipFile类,.NET 4.0有System.IO.Packing(但不是Client Profile)。所以,那些没有帮助的人。我注意到还有一个GZipStream类,但是我从来没有看到漂浮过的.gz文件,所以不确定这是否是一个好方法。我更喜欢我知道用户可以使用的基本.zip文件。

有一些第三方解决方案,例如http://icsharpcode.github.io/SharpZipLib/,但我认为它们比我正在寻找的10-20行代码要臃肿得多。也许这是正确答案......我不知道。

希望有几行VB.NET代码在针对.NET 4.0 CP的解决方案中压缩某些文件。

5 个答案:

答案 0 :(得分:2)

从“source”文件夹创建ZIP。

UINavigationController

将ZIP解压缩到“目标”文件夹。

Imports System.IO.Compression    
ZipFile.CreateFromDirectory("source","destination.zip",CompressionLevel.Optimal,False)

答案 1 :(得分:0)

只需使用Ionic.Zip.Dll

即可

这是函数,接受两个变量源路径和目标路径

public static void ExecuteBackupAsZip(string SourcePath, string DestinationPath)
        {
            using (var zip = new Ionic.Zip.ZipFile())
            {
                try
                {
                    zip.AddDirectory(SourcePath);
                    zip.Save(DestinationPath);
                }
                catch { Console.WriteLine("Failed to execute backup"); }
            }
        }

答案 2 :(得分:0)

MSDN网站有一个可以帮助您的课程,名为ZipFile

using System;
using System.IO;
using System.IO.Compression;

namespace ConsoleApplication {
  class Program {
    static void Main(string[] args) {
      string startPath = @"c:\example\start";
      string zipPath = @"c:\example\result.zip";
      string extractPath = @"c:\example\extract";
      'Creates Zip File to directory as specified (startPath). And puts it in a specifed folder (zipPath)
            ZipFile.CreateFromDirectory(startPath, zipPath);
              '
      Extracts Zip File to directory as specified(extractpath)
      ZipFile.ExtractToDirectory(zipPath, extractPath);
    }
  }
}

希望这有帮助!

答案 3 :(得分:0)

由于缺乏声誉而无法在评论部分发表评论(由于此处是新的)。

在两个答案上表明使用System.IO.Compression 可以使用被评论为在.NET 4.0 CP中不起作用的情况,这应该注意,因为原始答案不包括经常被忽视的事实。

需要将引用添加到项目中以激活“System.IO.Compression”。这对许多新的VS用户来说并不明显,除非添加了引用,否则“System.IO.Compression”似乎在.NET 4.0中不起作用。

在这种情况下,需要添加的引用是 System.IO.Compression.Filesystem (v4.0.0.0)。人们可能还希望添加引用: System.IO.Compression

“添加引用...”对话框位于VS。中的“项目”菜单下。

答案 4 :(得分:0)

与“奇怪的客人”一样的挑战。由于新用户的回复率低而不得不添加新答案,因此无法赞扬。 (不过,经常阅读)。在vb.Net 4.6上运行,并且上面的建议没有错误,但是未生成任何输出zip文件。然后,在谷歌搜索后添加了 System.IO.Compression.Filesystem System.IO.Compression 引用,最后得到了以下一种代码:

System.IO.Compression.ZipFile.CreateFromDirectory(FilePath1, FilePath3_ZippedFile)

其中FilePath1是源文件夹(c:\ whateverfolder)的路径,而FilePath3_ZippedFile是所生成的输出zip文件的路径(c:\ anotherfolder \ MyZipFile.zip)。

很抱歉,如果您认为我的输入多余,但是我知道,对于像我这样的新来者,我们需要使用三通勺作为答案。

注意事项:如果您尝试在源文件夹中创建zip文件,则可能会遇到问题。然后,我的代码仅将zip文件中源文件夹中的文件之一包括在内。 (无错误消息)。将目标位置更改为另一个文件夹可以解决此问题,而无需对代码进行其他编辑。