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); }
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); }
/// <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); } }
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); } }
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); } }
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()); } }
/// <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); }
//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); } } }
/// <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); }
// // 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); } } }
//ファイルを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ファイルに格納する } }
/// <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); }