AddFile() public method

Add full contents of a file into the Zip storage
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
Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        /// <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;
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 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);
 }