在C中创建一个文件夹的Zip文件夹#
我在C#中创建一个文件夹,我希望一旦创建它就可以将其压缩。我已经看过(How to zip a folder),(http://dotnetzip.codeplex.com/),但目前还没有运气。我对使用dotnetzip有点担心,因为它的最新版本是5年前。在C中创建一个文件夹的Zip文件夹#
dotnetzip在Visual Studio 2015中仍然相关,还是有更现代的方式来压缩C#中的文件夹而不使用包?
这是我如何复制文件夹;
private static void CopyDirectory(string SourcePath, string DestinationPath, bool overwriteexisting)
{
SourcePath = SourcePath.EndsWith(@"\") ? SourcePath : SourcePath + @"\";
DestinationPath = DestinationPath.EndsWith(@"\") ? DestinationPath : DestinationPath + @"\";
if (Directory.Exists(SourcePath))
{
if (Directory.Exists(DestinationPath) == false)
Directory.CreateDirectory(DestinationPath);
foreach (string fls in Directory.GetFiles(SourcePath))
{
FileInfo flinfo = new FileInfo(fls);
flinfo.CopyTo(DestinationPath + flinfo.Name, overwriteexisting);
}
foreach (string drs in Directory.GetDirectories(SourcePath))
{
DirectoryInfo drinfo = new DirectoryInfo(drs);
CopyDirectory(drs, DestinationPath + drinfo.Name, overwriteexisting);
}
}
}
我期待在此之后压缩创建的文件夹。
要压缩的文件夹,在.NET 4.5框架包含ZipFile.CreateFromDirectory:
string startPath = @"c:\example\start";
string zipPath = @"c:\example\result.zip";
ZipFile.CreateFromDirectory(startPath, zipPath);
How do I ZIP a file in C#, using no 3rd-party APIs?覆盖相同地,有两个净3.5(https://stackoverflow.com/a/940621/2381157)和.NET 4.5(https://stackoverflow.com/a/20200025/2381157)解决方案,所以我很惊讶,@kap状态中,存在这样做没有任何.NET类。
为什么投了票?重复问题的链接包含与@stuartd提供的相同的信息,这就是接受的答案。 – christutty
您可以使用第三方的dll ICSharpCode.SharpZipLib里面,你可以用下面的负载文件filsstream FS和进行 字节= fs.Read(缓冲,0,buffer.Length)zipFile.Write(缓冲压缩目录,0 ,字节)
只是想我的两分钱添加到您已接受作为答案的帖子。 比方说,你有一个文件夹结构:
C:\RootFolder
C:\RootFolder\Folder1
C:\RootFolder\Folder1\Folder1a
C:\RootFolder\Folder1\Folder1b
C:\RootFolder\file1.txt
C:\RootFolder\file2.txt
ZipFile.CreateFromDirectory
肯定是要走的路。不需要第三方库。你只需要引用System.IO.Compression.FileSystem
我想指出的是: 您可以压缩整个RootFolder它包括存档
ZipFile.CreateFromDirectory(@"C:\RootFolder", @"C:\RootFolder.zip",
CompressionLevel.Optimal, true);
或RootFolder无内容文件夹本身
ZipFile.CreateFromDirectory(@"C:\RootFolder", @"C:\RootFolder.zip",
CompressionLevel.Optimal, false);
第四个参数(bool includeBaseDirectory)给了我们这个灵活性。 希望它可以帮助别人。
_“目前还没有运气”_并不真正具有描述性。显示您的尝试和结果。 – CodeCaster
.Net 4.5中有[ZipFile.CreateFromDirectory](https://msdn.microsoft.com/en-us/library/hh485707%28v=vs.110%29.aspx) – stuartd
调查[压缩](https:/ /msdn.microsoft.com/en-us/library/system.io.compression(v=vs.110).aspx)与[ZipArchive]的具体主题(https://msdn.microsoft.com/en-us /library/system.io.compression.ziparchive(v=vs.110).aspx)类。 –