public AddFile ( Compression _method, string _pathname, string _filenameInZip, string _comment, ushort access = 0x8100 ) : void | ||
_method | Compression | Compression method |
_pathname | string | Full path of file to add to Zip storage |
_filenameInZip | string | Filename and path as desired in Zip directory |
_comment | string | Comment for stored file |
access | ushort | |
return | void |
/// <summary> /// Removes one of many files in storage. It creates a new Zip file. /// </summary> /// <param name="_zip">Reference to the current Zip object</param> /// <param name="_zfes">List of Entries to remove from storage</param> /// <returns>True if success, false if not</returns> /// <remarks>This method only works for storage of type FileStream</remarks> public static bool RemoveEntries(ref ZipStorer _zip, List <ZipFileEntry> _zfes) { if (!(_zip.ZipFileStream is FileStream)) { throw new InvalidOperationException("RemoveEntries is allowed just over streams of type FileStream"); } //Get full list of entries List <ZipFileEntry> fullList = _zip.ReadCentralDir(); //In order to delete we need to create a copy of the zip file excluding the selected items string tempZipName = Path.GetTempFileName(); string tempEntryName = Path.GetTempFileName(); try { ZipStorer tempZip = ZipStorer.Create(tempZipName, string.Empty); foreach (ZipFileEntry zfe in fullList) { if (!_zfes.Contains(zfe)) { if (_zip.ExtractFile(zfe, tempEntryName)) { tempZip.AddFile(zfe.Method, tempEntryName, zfe.FilenameInZip, zfe.Comment); } } } _zip.Close(); tempZip.Close(); File.Delete(_zip.FileName); File.Move(tempZipName, _zip.FileName); _zip = ZipStorer.Open(_zip.FileName, _zip.Access); } catch { return(false); } finally { if (File.Exists(tempZipName)) { File.Delete(tempZipName); } if (File.Exists(tempEntryName)) { File.Delete(tempEntryName); } } return(true); }
private static void docompressdirectory(ZipStorer zip, string dir, string prefix, bool recursive, Action <string> log) { if (recursive) { foreach (var d in Directory.GetDirectories(dir)) { docompressdirectory(zip, d, prefix, recursive, log); } } foreach (string path in Directory.GetFiles(dir)) { var fn = path.Replace(prefix, ""); zip.AddFile(ZipStorer.Compression.Deflate, path, fn, ""); log?.Invoke(fn); } }
/// <summary> Removes one of many files in storage. It creates a new Zip file. </summary> /// <param name="zip">Reference to the current Zip object</param> /// <param name="zfes">List of Entries to remove from storage</param> /// <returns>True if success, false if not</returns> /// <remarks>This method only works for storage of type FileStream</remarks> public static bool RemoveEntries( ref ZipStorer zip, [NotNull] List<ZipFileEntry> zfes ) { if( zfes == null ) throw new ArgumentNullException( "zfes" ); if( !( zip.zipFileStream is FileStream ) ) throw new InvalidOperationException( "RemoveEntries is allowed just over streams of type FileStream" ); //Get full list of entries List<ZipFileEntry> fullList = zip.ReadCentralDir(); //In order to delete we need to create a copy of the zip file excluding the selected items string tempZipName = Path.GetTempFileName(); string tempEntryName = Path.GetTempFileName(); try { ZipStorer tempZip = Create( tempZipName, string.Empty ); foreach( ZipFileEntry zfe in fullList ) { if( !zfes.Contains( zfe ) ) { if( zip.ExtractFile( zfe, tempEntryName ) ) { tempZip.AddFile( zfe.Method, tempEntryName, zfe.FileNameInZip, zfe.Comment ); } } } zip.Close(); tempZip.Close(); if( File.Exists( zip.fileName ) ) { File.Replace( tempZipName, zip.fileName, null, true ); } else { File.Move( tempZipName, zip.fileName ); } zip = Open( zip.fileName, zip.access ); } catch { return false; } finally { if( File.Exists( tempZipName ) ) File.Delete( tempZipName ); if( File.Exists( tempEntryName ) ) File.Delete( tempEntryName ); } return true; }
public static bool RemoveEntries(ref ZipStorer _zip, List <ZipFileEntry> _zfes) { if (!(_zip.ZipFileStream is FileStream)) { throw new InvalidOperationException("RemoveEntries is allowed just over streams of type FileStream"); } List <ZipFileEntry> list = _zip.ReadCentralDir(); string tempFileName = Path.GetTempFileName(); string tempFileName2 = Path.GetTempFileName(); try { ZipStorer zipStorer = Create(tempFileName, string.Empty); foreach (ZipFileEntry item in list) { if (!_zfes.Contains(item) && _zip.ExtractFile(item, tempFileName2)) { zipStorer.AddFile(item.Method, tempFileName2, item.FilenameInZip, item.Comment); } } _zip.Close(); zipStorer.Close(); File.Delete(_zip.FileName); File.Move(tempFileName, _zip.FileName); _zip = Open(_zip.FileName, _zip.Access); } catch { return(false); } finally { if (File.Exists(tempFileName)) { File.Delete(tempFileName); } if (File.Exists(tempFileName2)) { File.Delete(tempFileName2); } } return(true); }
public void Save() { Zip = ZipStorer.Create(zipFile, "GamePower Package"); Zip.EncodeUTF8 = false; foreach (String file in Files) Zip.AddFile(ZipStorer.Compression.Store, file, Path.GetFileName(file), String.Empty); }