예제 #1
0
        public static void Zip(string output, FileCollection files, MemoryFileCollection memoryFiles)
        {
            System.IO.DirectoryInfo directoryInfo = new System.IO.FileInfo(output).Directory;
            if (!directoryInfo.Exists)
            {
                directoryInfo.Create();
            }

            using (System.IO.FileStream fileStream = System.IO.File.Create(output))
            {
                NZlib.Zip.ZipOutputStream zipOutputStream = new NZlib.Zip.ZipOutputStream(fileStream);
                zipOutputStream.SetLevel(ZIP_LEVEL);


                //Files
                foreach (File file in files)
                {
                    AddFile(zipOutputStream, file);
                }

                //MemoryFiles
                foreach (MemoryFile memoryFile in memoryFiles)
                {
                    Add(zipOutputStream, memoryFile.Name, memoryFile.DateTime, memoryFile.Bytes.Length, memoryFile.Bytes);
                }


                zipOutputStream.Finish();
                zipOutputStream.Close();

                fileStream.Close();
            }
        }
예제 #2
0
 private static void Add(NZlib.Zip.ZipOutputStream zipOutputStream, string name, System.DateTime dateTime, long size, byte[] buffer)
 {
     NZlib.Zip.ZipEntry zipEntry = new NZlib.Zip.ZipEntry(name);
     zipEntry.DateTime = dateTime;
     if (ZIP_LEVEL == 0)
     {
         zipEntry.Size = size;
         // calculate crc32 of current file
         NZlib.Checksums.Crc32 crc = new NZlib.Checksums.Crc32();
         crc.Update(buffer);
         zipEntry.Crc = crc.Value;
     }
     zipOutputStream.PutNextEntry(zipEntry);
     zipOutputStream.Write(buffer, 0, buffer.Length);
 }
예제 #3
0
        private static void AddFile(NZlib.Zip.ZipOutputStream zipOutputStream, File file)
        {
            System.IO.FileInfo fileInfo = new System.IO.FileInfo(file.Path);

            System.IO.FileStream fileStream = System.IO.File.OpenRead(fileInfo.FullName);

            System.DateTime dateTime = fileInfo.LastWriteTime;
            long            filesize = fileInfo.Length;

            byte[] buffer = new byte[fileStream.Length];
            fileStream.Read(buffer, 0, buffer.Length);
            fileStream.Close();

            Add(zipOutputStream, file.Name, dateTime, filesize, buffer);
        }