/// <summary> /// Zips the specified <paramref name="baseFolder"/>. /// </summary> /// <param name="fileName">Relative filename in zip.</param> /// <param name="contentStream">The content of the file</param> public void Zip(string fileName, Stream contentStream) { var nameTransform = new ICSharpCode.SharpZipLib.Zip.ZipNameTransform(); var relativeName = nameTransform.TransformFile(fileName); var zipEntry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(relativeName); zipStream.PutNextEntry(zipEntry); contentStream.CopyTo(zipStream); }
/// <summary> /// Zips the specified <paramref name="baseFolder"/>. /// </summary> /// <param name="fileName">Relative filename in zip.</param> /// <param name="content">The content of the file</param> public void Zip(string fileName, byte[] content) { if (content == null) { return; } var nameTransform = new ICSharpCode.SharpZipLib.Zip.ZipNameTransform(); var relativeName = nameTransform.TransformFile(fileName); var zipEntry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(relativeName); zipStream.PutNextEntry(zipEntry); zipStream.Write(content, 0, content.Length); }
/// <summary> /// Recursive Zipping of a directory. /// </summary> /// <param name="zipStream"></param> /// <param name="baseDir"></param> /// <param name="dir"></param> /// <param name="filesToIgnore"></param> private static void ZipDirectory(ICSharpCode.SharpZipLib.Zip.ZipOutputStream zipStream, DirectoryInfo baseDir, DirectoryInfo dir, string[] filesToIgnore) { var nameTransform = new ICSharpCode.SharpZipLib.Zip.ZipNameTransform(baseDir.FullName); foreach (var file in dir.GetFiles()) { if (IgnoreFile(baseDir.FullName, file.FullName, filesToIgnore)) { continue; } var relativeName = nameTransform.TransformFile(file.FullName); var zipEntry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(relativeName); zipStream.PutNextEntry(zipEntry); using (var fileStream = file.OpenRead()) fileStream.CopyTo(zipStream); } foreach (var subDir in dir.GetDirectories()) { if (IgnoreFile(baseDir.FullName, subDir.FullName, filesToIgnore)) { continue; } ZipDirectory(zipStream, baseDir, subDir, filesToIgnore); } }
private void _CompressZIP(string pathFileZip, IDTSComponentEvents componentEvents) { System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(_folderSource); System.IO.FileInfo[] fi_s = di.GetFiles("*.*", (_recurse ? System.IO.SearchOption.AllDirectories : System.IO.SearchOption.TopDirectoryOnly)); bool b = false; try { using (ICSharpCode.SharpZipLib.Zip.ZipOutputStream fz = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(System.IO.File.Create(pathFileZip))) { fz.SetLevel(9); if (!string.IsNullOrEmpty(_comment)) { componentEvents.FireInformation(1, "UnZip SSIS", "Set Comment.", null, 0, ref b); fz.SetComment(_comment); } if (!string.IsNullOrWhiteSpace(_password)) { componentEvents.FireInformation(1, "UnZip SSIS", "Set Password.", null, 0, ref b); fz.Password = _password; } foreach (System.IO.FileInfo fi in fi_s) { if (!System.Text.RegularExpressions.Regex.Match(fi.FullName, _fileFilter).Success) { componentEvents.FireInformation(1, "UnZip SSIS", _typeCompression.ToString() + ": file " + fi.FullName + " doesn't match regex filter '" + _fileFilter + "'. File not processed.", null, 0, ref b); continue; } componentEvents.FireInformation(1, "UnZip SSIS", _typeCompression.ToString() + ": Compress (with '" + _storePaths.ToString() + "') file: " + fi.FullName, null, 0, ref b); string file_name = ""; ICSharpCode.SharpZipLib.Zip.ZipEntry ze = null; if (_storePaths == Store_Paths.Absolute_Paths) { //Absolute Path file_name = ICSharpCode.SharpZipLib.Zip.ZipEntry.CleanName(fi.FullName); ze = new ICSharpCode.SharpZipLib.Zip.ZipEntry(file_name); } else if (_storePaths == Store_Paths.Relative_Paths) { //Relative Path ICSharpCode.SharpZipLib.Zip.ZipNameTransform zn = new ICSharpCode.SharpZipLib.Zip.ZipNameTransform(_folderSource); file_name = zn.TransformFile(fi.FullName); if (_addRootFolder) { file_name = (di.Name + "/" + file_name).Replace("//", "/"); } ze = new ICSharpCode.SharpZipLib.Zip.ZipEntry(file_name); } else if (_storePaths == Store_Paths.No_Paths) { //No Path file_name = fi.Name; ze = new ICSharpCode.SharpZipLib.Zip.ZipEntry(file_name); } else { throw new Exception("Please select type Store Paths (No_Paths / Relative_Paths / Absolute_Paths)."); } using (System.IO.FileStream fs = new System.IO.FileStream(fi.FullName, System.IO.FileMode.Open, System.IO.FileAccess.Read)) { ze.Size = fs.Length; fz.PutNextEntry(ze); fs.CopyTo(fz); fs.Flush(); fz.Flush(); fz.CloseEntry(); } } fz.Flush(); } _Check_ZIP(pathFileZip, componentEvents); } catch (Exception ex) { componentEvents.FireError(1000, "UnZip SSIS", ex.Message, null, 0); throw; } finally { } }
/// <summary> /// Initialise a new instance of the <see cref="ZipEntryFactory"/> class. /// </summary> /// <remarks>A default <see cref="INameTransform"/>, and the LastWriteTime for files is used.</remarks> public ZipEntryFactory() { nameTransform_ = new ZipNameTransform(); }
/// <summary> /// Initialise a new instance of <see cref="ZipEntryFactory"/> using the specified <see cref="DateTime"/> /// </summary> /// <param name="time">The time to set all <see cref="ZipEntry.DateTime"/> values to.</param> public ZipEntryFactory(DateTime time) { timeSetting_ = TimeSetting.Fixed; FixedDateTime = time; nameTransform_ = new ZipNameTransform(); }
/// <summary> /// Initialise a new instance of <see cref="ZipEntryFactory"/> using the specified <see cref="TimeSetting"/> /// </summary> /// <param name="timeSetting">The <see cref="TimeSetting">time setting</see> to use when creating <see cref="ZipEntry">Zip entries</see>.</param> public ZipEntryFactory(TimeSetting timeSetting) { timeSetting_ = timeSetting; nameTransform_ = new ZipNameTransform(); }
/// <summary> /// Initialise a new instance of the <see cref="ZipEntryFactory"/> class. /// </summary> /// <remarks>A default <see cref="INameTransform"/>, and the LastWriteTime for files is used.</remarks> public ZipEntryFactory() { nameTransform_ = new ZipNameTransform(); }
/// <summary> /// Initialise a new instance of <see cref="ZipEntryFactory"/> using the specified <see cref="DateTime"/> /// </summary> /// <param name="time">The time to set all <see cref="ZipEntry.DateTime"/> values to.</param> public ZipEntryFactory(DateTime time) { timeSetting_ = TimeSetting.Fixed; FixedDateTime = time; nameTransform_ = new ZipNameTransform(); }
/// <summary> /// Initialise a new instance of <see cref="ZipEntryFactory"/> using the specified <see cref="TimeSetting"/> /// </summary> /// <param name="timeSetting">The <see cref="TimeSetting">time setting</see> to use when creating <see cref="ZipEntry">Zip entries</see>.</param> public ZipEntryFactory(TimeSetting timeSetting) { timeSetting_ = timeSetting; nameTransform_ = new ZipNameTransform(); }
/// <summary> /// Recursive Zipping of a directory. /// </summary> /// <param name="zipStream"></param> /// <param name="baseDir"></param> /// <param name="dir"></param> /// <param name="filesToIgnore"></param> private static void ZipDirectory(ICSharpCode.SharpZipLib.Zip.ZipOutputStream zipStream, DirectoryInfo baseDir, DirectoryInfo dir, string[] filesToIgnore) { var nameTransform = new ICSharpCode.SharpZipLib.Zip.ZipNameTransform(baseDir.FullName); foreach (var file in dir.GetFiles()) { if (IgnoreFile(baseDir.FullName, file.FullName, filesToIgnore)) continue; var relativeName = nameTransform.TransformFile(file.FullName); var zipEntry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(relativeName); zipStream.PutNextEntry(zipEntry); using (var fileStream = file.OpenRead()) fileStream.CopyTo(zipStream); } foreach (var subDir in dir.GetDirectories()) { if (IgnoreFile(baseDir.FullName, subDir.FullName, filesToIgnore)) continue; ZipDirectory(zipStream, baseDir, subDir, filesToIgnore); } }
/// <summary> /// Zips the specified <paramref name="baseFolder"/>. /// </summary> /// <param name="fileName">Relative filename in zip.</param> /// <param name="content">The content of the file</param> public void Zip(string fileName, byte[] content) { if (content==null) return; var nameTransform = new ICSharpCode.SharpZipLib.Zip.ZipNameTransform(); var relativeName = nameTransform.TransformFile(fileName); var zipEntry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(relativeName); zipStream.PutNextEntry(zipEntry); zipStream.Write(content, 0, content.Length); }
/// <summary> /// Zips the specified <paramref name="baseFolder"/>. /// </summary> /// <param name="fileName">Relative filename in zip.</param> /// <param name="contentStream">The content of the file</param> public void Zip(string fileName, Stream contentStream) { var nameTransform = new ICSharpCode.SharpZipLib.Zip.ZipNameTransform(); var relativeName = nameTransform.TransformFile(fileName); var zipEntry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(relativeName); zipStream.PutNextEntry(zipEntry); contentStream.CopyTo(zipStream); }
private static void compress_zip() { string zipPath = bset.zip_path; string zipFolder = bset.tmp_folder_path; //Write ZIP Stream. FileStream writer = new FileStream(zipPath, FileMode.Create, FileAccess.Write); //Build ZipOutputStream. ICSharpCode.SharpZipLib.Zip.ZipOutputStream zos = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(writer); //Set compress levels. if ((0 <= bset.compress) | (9 >= bset.compress)) { zos.SetLevel(bset.compress); } else { zos.SetLevel(9); } //Get folders. ICSharpCode.SharpZipLib.Zip.ZipNameTransform nameTrans = new ICSharpCode.SharpZipLib.Zip.ZipNameTransform(zipFolder); foreach (string file in Directory.EnumerateFiles(zipFolder, "*", System.IO.SearchOption.AllDirectories)) { if (file == bset.zip_path) { continue; } // Set file name. string f = nameTrans.TransformFile(file); ICSharpCode.SharpZipLib.Zip.ZipEntry ze = new ICSharpCode.SharpZipLib.Zip.ZipEntry(f); // Set file informations. FileInfo fi = new System.IO.FileInfo(file); ze.DateTime = fi.LastAccessTime; ze.ExternalFileAttributes = (int)fi.Attributes; ze.Size = fi.Length; ze.IsUnicodeText = true; zos.PutNextEntry(ze); // Load files. try { FileStream fs = new System.IO.FileStream(file, FileMode.Open, FileAccess.Read); byte[] buffer = new byte[2048]; int len; while ((len = fs.Read(buffer, 0, buffer.Length)) > 0) { zos.Write(buffer, 0, len); } fs.Close(); } catch (Exception ex) { Console.WriteLine(" - Error: " + file + " [" + ex.Message + "]"); continue; } } // Close objects. zos.Finish(); zos.Close(); writer.Close(); }