Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
        /// <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);
            }
        }
Ejemplo n.º 4
0
        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
            {
            }
        }
Ejemplo n.º 5
0
 /// <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();
 }
Ejemplo n.º 6
0
 /// <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();
 }
Ejemplo n.º 7
0
 /// <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();
 }
Ejemplo n.º 8
0
 /// <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();
 }
Ejemplo n.º 9
0
 /// <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();
 }
Ejemplo n.º 10
0
 /// <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();
 }
Ejemplo n.º 11
0
 /// <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);
      }
 }
Ejemplo n.º 12
0
 /// <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);
 }
Ejemplo n.º 13
0
 /// <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);
 }
Ejemplo n.º 14
0
        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();
        }