我想在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的解决方案中压缩某些文件。
答案 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文件中源文件夹中的文件之一包括在内。 (无错误消息)。将目标位置更改为另一个文件夹可以解决此问题,而无需对代码进行其他编辑。