Exemple #1
0
        public static void AddText(this ZipStorer self, ZipStorer.Compression _method, string _text, string _filenameInZip, DateTime _modTime, string _comment)
        {
            byte[]       bytes  = Encoding.UTF8.GetBytes(_text);
            MemoryStream stream = new MemoryStream(bytes);

            self.AddStream(_method, _filenameInZip, stream, _modTime, _comment);
        }
Exemple #2
0
 public void AddStream(ZipStorer.Compression _method, string _filenameInZip, Stream _source, DateTime _modTime, string _comment)
 {
     if (this.Access == FileAccess.Read)
     {
         throw new InvalidOperationException("Writing is not alowed");
     }
     if (this.Files.Count != 0)
     {
         ZipStorer.ZipFileEntry zipFileEntry = this.Files[this.Files.Count - 1];
     }
     ZipStorer.ZipFileEntry item = default(ZipStorer.ZipFileEntry);
     item.Method        = _method;
     item.EncodeUTF8    = this.EncodeUTF8;
     item.FilenameInZip = this.NormalizedFilename(_filenameInZip);
     item.Comment       = ((_comment == null) ? "" : _comment);
     item.Crc32         = 0u;
     item.HeaderOffset  = (uint)this.ZipFileStream.Position;
     item.ModifyTime    = _modTime;
     this.WriteLocalHeader(ref item);
     item.FileOffset = (uint)this.ZipFileStream.Position;
     this.Store(ref item, _source);
     _source.Close();
     this.UpdateCrcAndSizes(ref item);
     this.Files.Add(item);
 }
Exemple #3
0
 /// <summary>
 /// <br>Метод для добавления папки в .Zip архив</br>
 /// </summary>
 /// <param name="zippath">The path to the .zip archive folder<br>Путь к папке .zip архива</br></param>
 /// <param name="datapath">Full path to the folder to add to the .zip archive<br>Полный путь к папке для добавления в .zip архив</br></param>
 /// <param name="mode">Compression method<br>Метод сжатия</br></param>
 /// <param name="commentzip">Comments on the .zip archive<br>Комментарии к .zip архиву</br></param>
 public static void AddDirectory(string zippath, string datapath, ZipStorer.Compression mode, string commentzip = "")
 {
     using var zipdir = ZipStorer.Create(zippath, commentzip);
     if (Directory.Exists(datapath))
     {
         zipdir?.AddDirectory(mode, datapath, string.Empty);
     }
 }
Exemple #4
0
 public static void AddMassDirectory(string zippath, List <string> datapath, ZipStorer.Compression mode, string commentzip = "")
 {
     using var zipdir = ZipStorer.Create(zippath, commentzip);
     foreach (string dir in datapath.Where(dir => Directory.Exists(dir)))
     {
         zipdir?.AddDirectory(mode, dir, string.Empty);
     }
 }
Exemple #5
0
 public static void AddMassFile(string zippath, List <string> filepath, ZipStorer.Compression mode, string commentzip = "")
 {
     using var zip  = ZipStorer.Create(zippath, commentzip);
     zip.EncodeUTF8 = true;
     foreach (string files in filepath.Where(files => File.Exists(files)))
     {
         zip?.AddFile(mode, files, Path.GetFileName(files), string.Empty);
     }
 }
Exemple #6
0
        public void AddFile(ZipStorer.Compression _method, string _pathname, string _filenameInZip, string _comment)
        {
            if (this.Access == FileAccess.Read)
            {
                throw new InvalidOperationException("Writing is not alowed");
            }
            FileStream fileStream = new FileStream(_pathname, FileMode.Open, FileAccess.Read);

            this.AddStream(_method, _filenameInZip, fileStream, File.GetLastWriteTime(_pathname), _comment);
            fileStream.Close();
        }
        public static byte[] ZipArchive(byte[] data, Compression compression)
        {
            ZipStorer.Compression comp = (compression == Compression.None)
                                                        ? ZipStorer.Compression.Store
                                                        : ZipStorer.Compression.Deflate;

            using (var zipStream = new MemoryStream())
            {
                using (var zipStorer = ZipStorer.Create(zipStream))
                    using (var dataStream = new MemoryStream(data))
                    {
                        zipStorer.AddStream(comp, DefaultZipEntry, dataStream, DateTime.Now);
                    }

                return(zipStream.ToArray());
            }
        }
Exemple #8
0
        /// <summary>
        /// Zip the given folder
        /// </summary>
        public static bool ZipFolder(string zipPath, string folderPath, ZipStorer.Compression compressionMethod)
        {
            if (string.IsNullOrEmpty(zipPath) || string.IsNullOrEmpty(folderPath))
            {
                return(false);
            }

            if (!Directory.Exists(folderPath))
            {
                return(false);
            }

            bool result = true;

            try {
                ZipStorer zip;
                if (!File.Exists(zipPath))
                {
                    var zipFolder = Path.GetDirectoryName(zipPath);
                    if (!CreateDirectory(zipFolder))
                    {
                        return(false);
                    }
                    zip = ZipStorer.Create(zipPath, "Created with 3P @ " + DateTime.Now + "\r\n" + Config.UrlWebSite);
                }
                else
                {
                    zip = ZipStorer.Open(zipPath, FileAccess.Write);
                }
                foreach (var file in Directory.EnumerateFiles(folderPath, "*", SearchOption.AllDirectories))
                {
                    zip.AddFile(compressionMethod, file, file.Replace(folderPath, "").TrimStart('\\'), "Added @ " + DateTime.Now);
                }
                zip.Close();
            } catch (Exception e) {
                ErrorHandler.ShowErrors(e, "Error zipping " + folderPath);
                result = false;
            }

            return(result);
        }
Exemple #9
0
        //Epubにファイルを追加する(mimetypeを除く)
        private static void WriteEpubFilesToZip(ZipStorer zip, string srcDir)
        {
            var files       = Directory.GetFiles(srcDir, "*", SearchOption.AllDirectories);     //全ファイル
            var targetFiles = files.Where(e => Path.GetFileName(e).Equals("mimetype") != true)  //mimetypeを除く
                              .Select(e => new FileInfo(e));

            foreach (var targetFile in targetFiles)
            {
                var ext         = targetFile.Extension;
                var compression = new ZipStorer.Compression();
                switch (ext)
                {
                case "jpg":     //画像ファイルは圧縮しない(時間の無駄なので)
                case "JPEG":
                case "png":
                case "PNG":
                case "gif":
                case "GIF":
                    compression = ZipStorer.Compression.Store;
                    break;

                case "EPUB":
                case "epub":
                    continue;       //EPUBファイルは格納しない

                default:
                    compression = ZipStorer.Compression.Deflate;      //通常のファイルは圧縮する
                    break;
                }
                //対象を書き込む
                using (var ms = new MemoryStream(File.ReadAllBytes(targetFile.FullName)))
                {
                    ms.Position = 0;                                             //ファイルの先頭からコピー
                    var fileNameInZip = GetRelPath(targetFile.FullName, srcDir); //zip内でのファイル名
                    zip.AddStream(compression, fileNameInZip, ms, DateTime.Now, string.Empty);
                }
            }
        }
Exemple #10
0
 /// <summary>
 /// Method for adding a file to a .zip archive
 /// <br>Метод для добавления файла в .zip архив</br>
 /// </summary>
 /// <param name="zippath">The path to the .zip archive folder<br>Путь к папке .zip архива</br></param>
 /// <param name="filepath">Full path to the file to add to the .Zip archive<br>Полный путь к файлу для добавления в .Zip архив</br></param>
 /// <param name="mode">Compression method<br>Метод сжатия</br></param>
 /// <param name="commentzip">Comments on the .zip archive<br>Комментарии к .zip архиву</br></param>
 public static void AddFile(string zippath, string filepath, ZipStorer.Compression mode, string commentzip = "")
 {
     using var zip  = ZipStorer.Create(zippath, commentzip);
     zip.EncodeUTF8 = true;
     zip?.AddFile(mode, filepath, Path.GetFileName(filepath), string.Empty);
 }
Exemple #11
0
        //
        //	Public methods
        //

        public StorageZipService(Compression compression)
        {
            m_compression = (compression == Compression.None)
                                        ? ZipStorer.Compression.Store
                                        : ZipStorer.Compression.Deflate;
        }
        //Epubにファイルを追加する(mimetypeを除く)
        private static void WriteEpubFilesToZip(ZipStorer zip,string srcDir)
        {
            var files = Directory.GetFiles(srcDir, "*", SearchOption.AllDirectories);           //全ファイル
            var targetFiles = files.Where(e => Path.GetFileName(e).Equals("mimetype") != true)  //mimetypeを除く
                .Select(e => new FileInfo(e));

            foreach (var targetFile in targetFiles)
            {
                var ext = targetFile.Extension;
                var compression = new ZipStorer.Compression();
                switch (ext)
                {
                    case "jpg": //画像ファイルは圧縮しない(時間の無駄なので)
                    case "JPEG":
                    case "png":
                    case "PNG":
                    case "gif":
                    case "GIF":
                        compression = ZipStorer.Compression.Store;
                        break;
                    case "EPUB":
                    case "epub":
                        continue;   //EPUBファイルは格納しない
                    default:
                        compression = ZipStorer.Compression.Deflate;  //通常のファイルは圧縮する
                        break;
                }
                //対象を書き込む
                using (var ms = new MemoryStream(File.ReadAllBytes(targetFile.FullName)))
                {
                    ms.Position = 0;    //ファイルの先頭からコピー
                    var fileNameInZip = GetRelPath(targetFile.FullName, srcDir);    //zip内でのファイル名
                    zip.AddStream(compression, fileNameInZip, ms, DateTime.Now, string.Empty);
                }
            }
        }
Exemple #13
0
 //ファイルをzipファイルに書き込む
 private static void WriteFileToZip(ZipStorer zip, FileInfo file, string fileNameInZip, ZipStorer.Compression compression)
 {
     using (var m = new MemoryStream(File.ReadAllBytes(file.FullName)))            //対象をファイルから読み出す
     {
         m.Position = 0;                                                           //先頭からコピー
         zip.AddStream(compression, fileNameInZip, m, DateTime.Now, String.Empty); //zipファイルに格納する
     }
 }
Exemple #14
0
        /// <summary>
        /// This methods pushes a file into a new/existing zip file
        /// </summary>
        public static bool ZipFile(string zipPath, string filePath, string filePathInZip, ZipStorer.Compression compressionMethod)
        {
            if (string.IsNullOrEmpty(zipPath))
            {
                return(false);
            }

            bool result = true;

            try {
                ZipStorer zip;
                if (!File.Exists(zipPath))
                {
                    var zipFolder = Path.GetDirectoryName(zipPath);
                    if (!CreateDirectory(zipFolder))
                    {
                        return(false);
                    }

                    zip = ZipStorer.Create(zipPath, "Created with 3P @ " + DateTime.Now + "\r\n" + Config.UrlWebSite);
                }
                else
                {
                    zip = ZipStorer.Open(zipPath, FileAccess.Write);
                }
                zip.AddFile(compressionMethod, filePath, filePathInZip, "Added @ " + DateTime.Now);
                zip.Close();
            } catch (Exception e) {
                ErrorHandler.ShowErrors(e, "Error zipping " + filePath + " to " + zipPath);
                result = false;
            }

            return(result);
        }