private void CreateZip(string path, string zipFileName, string ignore = null) { ZipFile zipFile = new ZipFile { CompressionLevel = CompressionLevel.BestCompression, UseZip64WhenSaving = Zip64Option.AsNecessary }; if (ignore == null) { zipFile.AddDirectory(path); } else { Assert.IsTrue( !ignore.Contains('\\') && !ignore.Contains('/'), "Multi-level ignore is not supported for archiving", true); foreach (string str in Directory.GetDirectories(path)) { string name = new DirectoryInfo(str).Name; if (!name.EqualsIgnoreCase(ignore, false)) { zipFile.AddDirectory(str, name); } } foreach (string fileName in Directory.GetFiles(path)) { zipFile.AddFile(fileName, "/"); } } zipFile.Save(zipFileName); }
public virtual void DeleteIfExists([CanBeNull] string path, string ignore = null) { if (!string.IsNullOrEmpty(path) && (Directory.Exists(path) || File.Exists(path))) { if (ignore == null) { this.Delete(path); } else { Assert.IsTrue(!ignore.Contains('\\') && !ignore.Contains('/'), "Multi-level ignore is not supported for deleting"); foreach (var directory in Directory.GetDirectories(path)) { string directoryName = new DirectoryInfo(directory).Name; if (!directoryName.EqualsIgnoreCase(ignore)) { this.Delete(directory); } } foreach (var file in Directory.GetFiles(path)) { this.Delete(file); } } } }
public virtual void CreateZip(string path, string zipFileName, string ignore = null, int compressionLevel = 0) { CompressionLevel zipCompressionLevel; if (typeof(CompressionLevel).IsEnumDefined(compressionLevel)) { zipCompressionLevel = (CompressionLevel)compressionLevel; } else { zipCompressionLevel = CompressionLevel.None; } var zip = new ZipFile { CompressionLevel = zipCompressionLevel, UseZip64WhenSaving = Zip64Option.AsNecessary }; if (ignore == null) { zip.AddDirectory(path); // , relativePath); } else { Assert.IsTrue(!ignore.Contains('\\') && !ignore.Contains('/'), "Multi-level ignore is not supported for archiving"); foreach (var directory in Directory.GetDirectories(path)) { string directoryName = new DirectoryInfo(directory).Name; if (!directoryName.EqualsIgnoreCase(ignore)) { zip.AddDirectory(directory, directoryName); } } foreach (var file in Directory.GetFiles(path)) { zip.AddFile(file, "/"); } } // zip.SaveProgress += this.OnSaveProgress; zip.Save(zipFileName); }