Write() public method

Writes the given buffer to the current entry.
Archive size is invalid No entry is active.
public Write ( byte buffer, int offset, int count ) : void
buffer byte The buffer containing data to write.
offset int The offset of the first byte to write.
count int The number of bytes to write.
return void
Ejemplo n.º 1
1
        /// <summary>
        /// This function creates a zip
        /// </summary>
        /// <param name="filepaths">List of absolute system filepaths</param>
        /// <param name="zipFileName">Absolute desired systeme final zip filepath</param>
        /// <param name="compressionLevel">Compression level from 0 (no comp.) to 9 (best comp.)</param>
        /// <returns></returns>
        public StdResult<NoType> CreateZip(List<string> filepaths, string zipFileName, int compressionLevel)
        {
            try
            {
                using (ZipOutputStream s = new ZipOutputStream(File.Create(zipFileName)))
                {
                    s.SetLevel(9); // 0 - store only to 9 - means best compression

                    byte[] buffer = new byte[4096];

                    foreach (string file in filepaths)
                    {

                        // Using GetFileName makes the result compatible with XP
                        // as the resulting path is not absolute.
                        ZipEntry entry = new ZipEntry(Path.GetFileName(file));

                        // Setup the entry data as required.

                        // Crc and size are handled by the library for seakable streams
                        // so no need to do them here.

                        // Could also use the last write time or similar for the file.
                        entry.DateTime = DateTime.Now;
                        s.PutNextEntry(entry);

                        using (FileStream fs = File.OpenRead(file))
                        {

                            // Using a fixed size buffer here makes no noticeable difference for output
                            // but keeps a lid on memory usage.
                            int sourceBytes;
                            do
                            {
                                sourceBytes = fs.Read(buffer, 0, buffer.Length);
                                s.Write(buffer, 0, sourceBytes);
                            } while (sourceBytes > 0);
                        }
                    }

                    // Finish/Close arent needed strictly as the using statement does this automatically

                    // Finish is important to ensure trailing information for a Zip file is appended.  Without this
                    // the created file would be invalid.
                    s.Finish();

                    // Close is important to wrap things up and unlock the file.
                    s.Close();
                    return StdResult<NoType>.OkResult;
                }
            }
            catch (Exception ex)
            {
                return StdResult<NoType>.BadResult(ex.Message);

                // No need to rethrow the exception as for our purposes its handled.
            }
        }
        private void saveFileDialog_FileOk(object sender, CancelEventArgs e)
        {
            ReportText = ReportTextBox.Text;
            ZipEntry ze;
            ZipOutputStream zip_out = new ZipOutputStream(File.Create((sender as SaveFileDialog).FileName));
            string SourceText;
            byte[] data=null;
            foreach (string FileName in FileNames)
            {
                SourceText = VEC.StandartCompiler.GetSourceFileText(FileName);
                if (SourceText != null)
                {
                    data = System.Text.Encoding.GetEncoding(1251).GetBytes(SourceText);
                    ze = new ZipEntry(System.IO.Path.GetFileName(FileName));
                    zip_out.PutNextEntry(ze);
                    zip_out.Write(data, 0, data.Length);
                }
            }
            ze = new ZipEntry("Report.txt");
            zip_out.PutNextEntry(ze);
            data = System.Text.Encoding.GetEncoding(1251).GetBytes(ReportText); 
            zip_out.Write(data, 0, data.Length);
           	zip_out.Finish();
			zip_out.Close();
        }
Ejemplo n.º 3
0
 public void ZipFile(string FileToZip, string ZipedFile, int CompressionLevel, int BlockSize)
 {
     if (!File.Exists(FileToZip))
     {
         throw new FileNotFoundException("The specified file " + FileToZip + " could not be found. Zipping aborderd");
     }
     FileStream fileStream = new FileStream(FileToZip, FileMode.Open, FileAccess.Read);
     FileStream baseOutputStream = File.Create(ZipedFile);
     ZipOutputStream zipOutputStream = new ZipOutputStream(baseOutputStream);
     ZipEntry entry = new ZipEntry("ZippedFile");
     zipOutputStream.PutNextEntry(entry);
     zipOutputStream.SetLevel(CompressionLevel);
     byte[] array = new byte[BlockSize];
     int num = fileStream.Read(array, 0, array.Length);
     zipOutputStream.Write(array, 0, num);
     try
     {
         while ((long)num < fileStream.Length)
         {
             int num2 = fileStream.Read(array, 0, array.Length);
             zipOutputStream.Write(array, 0, num2);
             num += num2;
         }
     }
     catch (Exception ex)
     {
         throw ex;
     }
     zipOutputStream.Finish();
     zipOutputStream.Close();
     fileStream.Close();
 }
Ejemplo n.º 4
0
        public void ZipFile(string FileToZip, string ZipedFile, int CompressionLevel, int BlockSize)
        {
            //如果文件没有找到,则报错
            if (!System.IO.File.Exists(FileToZip))
            {
                throw new System.IO.FileNotFoundException("The specified file " + FileToZip + " could not be found. Zipping aborderd");
            }

            System.IO.FileStream StreamToZip = new System.IO.FileStream(FileToZip, System.IO.FileMode.Open, System.IO.FileAccess.Read);
            System.IO.FileStream ZipFile = System.IO.File.Create(ZipedFile);
            ZipOutputStream ZipStream = new ZipOutputStream(ZipFile);
            ZipEntry ZipEntry = new ZipEntry("ZippedFile");
            ZipStream.PutNextEntry(ZipEntry);
            ZipStream.SetLevel(CompressionLevel);
            byte[] buffer = new byte[BlockSize];
            System.Int32 size = StreamToZip.Read(buffer, 0, buffer.Length);
            ZipStream.Write(buffer, 0, size);
            try
            {
                while (size < StreamToZip.Length)
                {
                    int sizeRead = StreamToZip.Read(buffer, 0, buffer.Length);
                    ZipStream.Write(buffer, 0, sizeRead);
                    size += sizeRead;
                }
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            ZipStream.Finish();
            ZipStream.Close();
            StreamToZip.Close();
        }
Ejemplo n.º 5
0
Archivo: ZipClass.cs Proyecto: hoya0/sw
        public static string AddZip(string fileName, string zipName, ZipOutputStream s)
        {
            Crc32 crc = new Crc32();
            try
            {
                FileStream fs = File.OpenRead(fileName);
                byte[] buffer = new byte[fs.Length];
                fs.Read(buffer, 0, buffer.Length);
                fileName = Path.GetFileName(fileName);
                long fileLength = fs.Length;
                fs.Close();

                ZipEntry entry = new ZipEntry(zipName);
                entry.DateTime = DateTime.Now;
                entry.Size = fileLength;

                crc.Reset();
                crc.Update(buffer);
                entry.Crc = crc.Value;
                s.PutNextEntry(entry);
                s.Write(buffer, 0, buffer.Length);

                return string.Empty;
            }
            catch (Exception addEx)
            {
                return addEx.ToString();
            }
        }
Ejemplo n.º 6
0
        private static void ZipFileDirectory(string[] files, ZipOutputStream z)
        {
            FileStream fs = null;
            Crc32 crc = new Crc32();
            try
            {
                foreach(string file in files)
                {
                    fs = File.OpenRead(file);
                    byte[] buffer = new byte[fs.Length];
                    fs.Read(buffer, 0, buffer.Length);
                    string fileName = Path.GetFileName(file);

                    ZipEntry entry = new ZipEntry(fileName);
                    entry.DateTime = DateTime.Now;
                    entry.Size = fs.Length;
                    fs.Close();
                    crc.Reset();
                    crc.Update(buffer);
                    entry.Crc = crc.Value;
                    z.PutNextEntry(entry);
                    z.Write(buffer, 0, buffer.Length);
                }
            }
            finally
            {
                if(fs!=null)
                {
                    fs.Close();
                    fs = null;
                }
                GC.Collect();
            }
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Compresses an array of bytes and stores the result in a new array of bytes.
 /// </summary>
 /// <param name="uncompressed">The uncompressed buffer.</param>
 /// <param name="compressed">An array of bytes where the compressed input will be stored.</param>
 /// <remarks>
 /// The compressed input is passed back to the calling method as an <b>out</b>
 /// parameter. That means that the calling method doesn't need to initialize the
 /// compressed buffer.  
 /// </remarks>
 /// <exception cref="ArgumentNullException">
 /// Thrown if the uncompressed input buffer is empty or null.
 /// </exception>
 /// <exception cref="CWZipException">
 /// Thrown if a problem is encountered during the compression process.
 /// </exception>
 public static void CompressBuffer(byte[] uncompressed, out byte[] compressed)
 {
     if ((uncompressed == null) || (uncompressed.Length == 0))
     {
         throw new ArgumentNullException("uncompressed", "The uncompressed input buffer cannot be null or empty.");
     }
     MemoryStream ms = null;
     compressed = null;
     try
     {
         ms = new MemoryStream();
         ZipOutputStream zip = new ZipOutputStream(ms);
         zip.SetLevel(compressionLevel);
         ZipEntry entry = new ZipEntry("1");
         zip.PutNextEntry(entry);
         zip.Write(uncompressed, 0, uncompressed.Length);
         zip.Finish();
         ms.Position = 0;
         compressed = ms.ToArray();
         ms.Close();
     }
     catch (Exception e)
     {
         if (ms != null)
         {
             ms.Close();
         }
         throw new CWZipException(e.Message);
     }
     finally
     {
         ms = null;
         GC.Collect();
     }
 }
Ejemplo n.º 8
0
		private void WriteObjectToZip (ZipOutputStream  zip_out,
					       FileSystemObject fso,
					       EventTracker     tracker)
		{

			MemoryStream memory = null;

			string name;
			name = fso.FullName.Substring (this.FullName.Length + 1);
			if (fso is DirectoryObject)
				name += "/";

			ZipEntry entry;
			entry = new ZipEntry (name);
			entry.DateTime = fso.Timestamp;
			
			if (fso is DirectoryObject)
				entry.Size = 0;
			else {
				memory = new MemoryStream ();
				((FileObject) fso).AddToStream (memory, tracker);
				entry.Size = memory.Length;
			}

			zip_out.PutNextEntry (entry);
			if (memory != null) {
				zip_out.Write (memory.ToArray (), 0, (int) memory.Length);
				memory.Close ();
			}

			// If this is a directory, write out the children
			if (fso is DirectoryObject)
				foreach (FileSystemObject child in fso.Children)
					WriteObjectToZip (zip_out, child, tracker);
		}
Ejemplo n.º 9
0
        public void zip(string to, string[] files)
        {
            using (ZipOutputStream s = new ZipOutputStream(File.Create(to)))
              {
            s.SetLevel(9);

            byte[] buffer = new byte[4096];

            foreach (string file in files)
            {
              ZipEntry entry = new ZipEntry(Path.GetFileName(file)) { DateTime = DateTime.Now };
              s.PutNextEntry(entry);

              using (FileStream fs = File.OpenRead(file))
              {
            int sourceBytes;
            do
            {
              sourceBytes = fs.Read(buffer, 0, buffer.Length);
              s.Write(buffer, 0, sourceBytes);
            } while (sourceBytes > 0);
              }
            }
            s.Finish();
            s.Close();
              }
        }
Ejemplo n.º 10
0
        //public static void ZipFile(string path, string file2Zip, string zipFileName, string zip, string bldgType)
        public static void ZipFile(string path, string file2Zip, string zipFileName)
        {
            //MemoryStream ms = InitializeGbxml(path + file2Zip, zip, bldgType) as MemoryStream;
            MemoryStream ms = InitializeGbxml(Path.Combine(path , file2Zip)) as MemoryStream;
 
            string compressedFile =Path.Combine(path, zipFileName);
            if (File.Exists(compressedFile))
            {
                File.Delete(compressedFile);
            }
            Crc32 objCrc32 = new Crc32();
            ZipOutputStream strmZipOutputStream = new ZipOutputStream(File.Create(compressedFile));
            strmZipOutputStream.SetLevel(9);

            byte[] gbXmlBuffer = new byte[ms.Length];
            ms.Read(gbXmlBuffer, 0, gbXmlBuffer.Length);

            ZipEntry objZipEntry = new ZipEntry(file2Zip);

            objZipEntry.DateTime = DateTime.Now;
            objZipEntry.Size = ms.Length;
            ms.Close();
            objCrc32.Reset();
            objCrc32.Update(gbXmlBuffer);
            objZipEntry.Crc = objCrc32.Value;
            strmZipOutputStream.PutNextEntry(objZipEntry);
            strmZipOutputStream.Write(gbXmlBuffer, 0, gbXmlBuffer.Length);
            strmZipOutputStream.Finish();
            strmZipOutputStream.Close();
            strmZipOutputStream.Dispose();
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Zip all the specified files into the specified ZipFileName.
        /// </summary>
        public static string ZipFiles(IEnumerable<string> FilesToZip, string ZipFileName, string Password)
        {
            if (!File.Exists(ZipFileName))
                File.Delete(ZipFileName);

            ZipOutputStream Zip = new ZipOutputStream(File.Create(ZipFileName));
            if (Password != "")
                Zip.Password = Password;
            try
            {
                Zip.SetLevel(5); // 0 - store only to 9 - means best compression
                foreach (string FileName in FilesToZip)
                {
                    FileStream fs = File.OpenRead(FileName);

                    byte[] Buffer = new byte[fs.Length];
                    fs.Read(Buffer, 0, Buffer.Length);
                    fs.Close();

                    ZipEntry Entry = new ZipEntry(Path.GetFileName(FileName));
                    Zip.PutNextEntry(Entry);
                    Zip.Write(Buffer, 0, Buffer.Length);
                }
                Zip.Finish();
                Zip.Close();
                return ZipFileName;
            }
            catch (System.Exception)
            {
                Zip.Finish();
                Zip.Close();
                File.Delete(ZipFileName);
                throw;
            }
        }
Ejemplo n.º 12
0
        public static string PackToBase64(byte[] data)
        {
            byte[]       buffer;
            MemoryStream ms = new MemoryStream();

            using (ICSharpCode.SharpZipLib.Zip.ZipOutputStream zipOutputStream = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(ms))
            {
                zipOutputStream.SetLevel(9);


                ICSharpCode.SharpZipLib.Zip.ZipEntry zipEntry = new ICSharpCode.SharpZipLib.Zip.ZipEntry("Boliglag.Admin");
                zipOutputStream.PutNextEntry(zipEntry);

                zipOutputStream.Write(data, 0, data.Length);

                zipOutputStream.Flush();
                zipOutputStream.Finish();

                buffer      = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(buffer, 0, Convert.ToInt32(ms.Length));
            }//using ( ICSharpCode.SharpZipLib.Zip.ZipOutputStream zipOutputStream = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream( fileStreamOut ) ) ...

            return(ToBase64(buffer));
        }
Ejemplo n.º 13
0
        public static string PackToBase64(string text)
        {
            byte[]       buffer;
            MemoryStream ms = new MemoryStream();

            using (ICSharpCode.SharpZipLib.Zip.ZipOutputStream zipOutputStream = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(ms))
            {
                zipOutputStream.SetLevel(9);


                ICSharpCode.SharpZipLib.Zip.ZipEntry zipEntry = new ICSharpCode.SharpZipLib.Zip.ZipEntry("Boliglag.Admin");
                zipOutputStream.PutNextEntry(zipEntry);

                byte[] bytes = System.Text.Encoding.Unicode.GetBytes(text.ToCharArray());

                zipOutputStream.Write(bytes, 0, bytes.Length);

                zipOutputStream.Flush();
                zipOutputStream.Finish();

                buffer      = new byte[ms.Length];
                ms.Position = 0;
                ms.Read(buffer, 0, Convert.ToInt32(ms.Length));
            }//using ( ICSharpCode.SharpZipLib.Zip.ZipOutputStream zipOutputStream = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream( fileStreamOut ) ) ...

            return(ToBase64(buffer));
        }
Ejemplo n.º 14
0
        public static string GetZipFileName(string filename)
        {
            string zipfile = filename.Replace (".db", ".zip");
            try {

                using (ZipOutputStream s = new ZipOutputStream (File.Create (zipfile))) {
                    s.SetLevel (9); // 0 - store only to 9 - means best compression
                    byte[] buffer = new byte[4096];
                    ZipEntry entry = new ZipEntry (filename);
                    entry.DateTime = DateTime.Now;
                    s.PutNextEntry (entry);

                    using (FileStream fs = File.OpenRead (filename)) {
                        int sourceBytes;
                        do {
                            sourceBytes = fs.Read (buffer, 0, buffer.Length);
                            s.Write (buffer, 0, sourceBytes);
                        } while (sourceBytes > 0);
                    }
                    s.Finish ();
                    s.Close ();
                }
            } catch (Exception ex) {
                zipfile = filename;
            }
            return zipfile;
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Método que faz o zip de arquivos encontrados no diretório <strPathDirectory>
        /// </summary>
        /// <param name="strPath"></param>
        public static void ZipFiles(String strPathDirectory, String strZipName)
        {
            try
            {
                using (ZipOutputStream ZipOut = new ZipOutputStream(File.Create(strPathDirectory + "\\" + strZipName + ".zip")))
                {
                    string[] OLfiles = Directory.GetFiles(strPathDirectory);
                    Console.WriteLine(OLfiles.Length);
                    ZipOut.SetLevel(9);
                    byte[] buffer = new byte[4096];

                    foreach (string filename in OLfiles)
                    {
                        ZipEntry entry = new ZipEntry(Path.GetFileName(filename));
                        ZipOut.PutNextEntry(entry);
                        using (FileStream fs = File.OpenRead(filename))
                        {
                            int sourceBytes;
                            do
                            {
                                sourceBytes = fs.Read(buffer, 0, buffer.Length);
                                ZipOut.Write(buffer, 0, sourceBytes);
                            } while (sourceBytes > 0);
                        }
                    }
                    ZipOut.Finish();
                    ZipOut.Close();
                }
            }
            catch (System.Exception ex)
            {
                System.Console.Error.WriteLine("exception: " + ex);
                //TODO colocar log
            }
        }
Ejemplo n.º 16
0
        /// <summary>
        /// 压缩文件
        /// </summary>
        /// <param name="sourceFilePath">待压缩的文件或文件夹路径</param>
        /// <param name="destinationZipFilePath">保存压缩文件的文件名</param>
        /// <param name="level">压缩文件等级</param>
        /// <returns>返回-2说明被压缩文件已经存在,返回1说明压缩成功</returns>            
        public static int CreateFileZip(string sourceFilePath, string destinationZipFilePath, int level)
        {
            if (!Directory.Exists(destinationZipFilePath.Substring(0, destinationZipFilePath.LastIndexOf("\\"))))
            {
                Directory.CreateDirectory(destinationZipFilePath.Substring(0, destinationZipFilePath.LastIndexOf("\\")));
            }
            if (File.Exists(destinationZipFilePath))
            {
                return -2;
            }
            else
            {
                ZipOutputStream zipStream = new ZipOutputStream(File.Create(destinationZipFilePath));
                zipStream.SetLevel(level);  // 压缩级别 0-9

                Crc32 crc = new Crc32();
                FileStream fileStream = File.OpenRead(sourceFilePath);
                byte[] buffer = new byte[fileStream.Length];
                fileStream.Read(buffer, 0, buffer.Length);
                string tempFile = sourceFilePath.Substring(sourceFilePath.LastIndexOf("\\") + 1);
                ZipEntry entry = new ZipEntry(tempFile);
                entry.DateTime = DateTime.Now;
                entry.Size = fileStream.Length;
                fileStream.Close();
                crc.Reset();
                crc.Update(buffer);
                entry.Crc = crc.Value;
                zipStream.PutNextEntry(entry);
                zipStream.Write(buffer, 0, buffer.Length);

                zipStream.Finish();
                zipStream.Close();
                return 1;
            }
        }
Ejemplo n.º 17
0
        public byte[] diskLess()
        {
            MemoryStream ms = new MemoryStream();
            StreamWriter sw = new StreamWriter(ms);
            sw.WriteLine("HELLO!");
            sw.WriteLine("I WANT TO SAVE THIS FILE AS A .TXT FILE WITHIN TWO FOLDERS");
            sw.Flush(); //This is required or you get a blank text file :)
            ms.Position = 0;

            // create the ZipEntry archive from the txt file in memory stream ms
            MemoryStream outputMS = new System.IO.MemoryStream();

            ZipOutputStream zipOutput = new ZipOutputStream(outputMS);

            ZipEntry ze = new ZipEntry(@"dir1/dir2/whatever.txt");
            zipOutput.PutNextEntry(ze);
            zipOutput.Write(ms.ToArray(), 0, Convert.ToInt32(ms.Length));
            zipOutput.Finish();
            zipOutput.Close();
            byte[] byteArrayOut = outputMS.ToArray();
            outputMS.Close();

            ms.Close();

            return byteArrayOut;

        }
Ejemplo n.º 18
0
        /// <summary>
        /// Compress an string using ZIP
        /// </summary>
        /// <param name="xml"></param>
        /// <returns></returns>
        public static byte[] CompressContent(string contentToZip)
        {

            System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
            byte[] buff = encoding.GetBytes(contentToZip);

            try
            {
                using (MemoryStream stream = new MemoryStream())
                {
                    using (ZipOutputStream zipout = new ZipOutputStream(stream))
                    {
                        zipout.SetLevel(9);
                        ZipEntry entry = new ZipEntry("zipfile.zip");
                        entry.DateTime = DateTime.Now;
                        zipout.PutNextEntry(entry);
                        zipout.Write(buff, 0, buff.Length);
                        zipout.Finish();
                        byte[] outputbyte = new byte[(int)stream.Length];
                        stream.Position = 0;
                        stream.Read(outputbyte, 0, (int)stream.Length);
                        return outputbyte;
                    }

                }
            }
            catch (Exception ex)
            {
                ex.Message.ToString();
                return null;
            }
        }
Ejemplo n.º 19
0
 private void zip(string strFile, ZipOutputStream s, string staticFile)
 {
     if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar) strFile += Path.DirectorySeparatorChar;
     Crc32 crc = new Crc32();
     string[] filenames = Directory.GetFileSystemEntries(strFile);
     foreach (string file in filenames)
     {
         if (Directory.Exists(file))
         {
             zip(file, s, staticFile);
         }
         else // 否则直接压缩文件
         {
             //打开压缩文件
             FileStream fs = File.OpenRead(file);
             byte[] buffer = new byte[fs.Length];
             fs.Read(buffer, 0, buffer.Length);
             string tempfile = file.Substring(staticFile.LastIndexOf("\\") + 1);
             ZipEntry entry = new ZipEntry(tempfile);
             entry.DateTime = DateTime.Now;
             entry.Size = fs.Length;
             fs.Close();
             crc.Reset();
             crc.Update(buffer);
             entry.Crc = crc.Value;
             s.PutNextEntry(entry);
             s.Write(buffer, 0, buffer.Length);
         }
     }
 }
Ejemplo n.º 20
0
 public static  void Zip(string strFile, string strZipFile)
 {
     Crc32 crc1 = new Crc32();
     ZipOutputStream stream1 = new ZipOutputStream(File.Create(strZipFile));
     try
     {
         stream1.SetLevel(6);
         FileStream stream2 = File.OpenRead(strFile);
         byte[] buffer1 = new byte[stream2.Length];
         stream2.Read(buffer1, 0, buffer1.Length);
         ZipEntry entry1 = new ZipEntry(strFile.Split(new char[] { '\\' })[strFile.Split(new char[] { '\\' }).Length - 1]);
         entry1.DateTime = DateTime.Now;
         entry1.Size = stream2.Length;
         stream2.Close();
         crc1.Reset();
         crc1.Update(buffer1);
         entry1.Crc = crc1.Value;
         stream1.PutNextEntry(entry1);
         stream1.Write(buffer1, 0, buffer1.Length);
     }
     catch (Exception exception1)
     {
         throw exception1;
     }
     finally
     {
         stream1.Finish();
         stream1.Close();
         stream1 = null;
         crc1 = null;
     }
 }
Ejemplo n.º 21
0
        public static void ZipFiles(string inputFolderPath, string outputPathAndFile, string password)
        {
            ArrayList ar = GenerateFileList(inputFolderPath); // generate file list
            int TrimLength = (Directory.GetParent(inputFolderPath)).ToString().Length;
            // find number of chars to remove 	// from orginal file path
            TrimLength += 1; //remove '\'
            FileStream ostream;
            byte[] obuffer;
            string outPath = outputPathAndFile;
            ZipOutputStream oZipStream = new ZipOutputStream(File.Create(outPath)); // create zip stream
            if (password != null && password != String.Empty)
                oZipStream.Password = password;
            oZipStream.SetLevel(9); // maximum compression
            ZipEntry oZipEntry;
            foreach (string Fil in ar) // for each file, generate a zipentry
            {
                oZipEntry = new ZipEntry(Fil.Remove(0, TrimLength));
                oZipStream.PutNextEntry(oZipEntry);

                if (!Fil.EndsWith(@"/")) // if a file ends with '/' its a directory
                {
                    ostream = File.OpenRead(Fil);
                    obuffer = new byte[ostream.Length];
                    ostream.Read(obuffer, 0, obuffer.Length);
                    oZipStream.Write(obuffer, 0, obuffer.Length);
                }
            }
            oZipStream.Finish();
            oZipStream.Close();
            oZipStream.Dispose();
        }
Ejemplo n.º 22
0
        public static void CreateZipFile(string[] filenames, string outputFile)
        {
            // Zip up the files - From SharpZipLib Demo Code
              using (ZipOutputStream s = new ZipOutputStream(File.Create(outputFile)))
              {
            s.SetLevel(9); // 0-9, 9 being the highest level of compression
            byte[] buffer = new byte[4096];
            foreach (string file in filenames)
            {
              ZipEntry entry = new ZipEntry(Path.GetFileName(file));
              entry.DateTime = DateTime.Now;
              s.PutNextEntry(entry);

              using (FileStream fs = File.OpenRead(file))
              {
            int sourceBytes;
            do
            {
              sourceBytes = fs.Read(buffer, 0, buffer.Length);
              s.Write(buffer, 0, sourceBytes);

            }
            while (sourceBytes > 0);
              }
            }
            s.Finish();
            s.Close();
              }
        }
Ejemplo n.º 23
0
   /// <summary>
 /// 压缩文件夹
 /// </summary>
 /// <param name="dirToZip"></param>
 /// <param name="zipedFileName"></param>
 /// <param name="compressionLevel">压缩率0(无压缩)9(压缩率最高)</param>
 public void ZipDir(string dirToZip, string zipedFileName, int compressionLevel = 9)
 {
     if (Path.GetExtension(zipedFileName) != ".zip")
     {
         zipedFileName = zipedFileName + ".zip";
     }
     using (var zipoutputstream = new ZipOutputStream(File.Create(zipedFileName)))
     {
         zipoutputstream.SetLevel(compressionLevel);
         var crc = new Crc32();
         var fileList = GetAllFies(dirToZip);
         foreach (DictionaryEntry item in fileList)
         {
             var fs = new FileStream(item.Key.ToString(), FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
             var buffer = new byte[fs.Length];
             fs.Read(buffer, 0, buffer.Length);
             // ZipEntry entry = new ZipEntry(item.Key.ToString().Substring(dirToZip.Length + 1));
             var entry = new ZipEntry(Path.GetFileName(item.Key.ToString()))
                              {
                                  DateTime = (DateTime) item.Value,
                                  Size = fs.Length
                              };
             fs.Close();
             crc.Reset();
             crc.Update(buffer);
             entry.Crc = crc.Value;
             zipoutputstream.PutNextEntry(entry);
             zipoutputstream.Write(buffer, 0, buffer.Length);
         }
     }
 }
Ejemplo n.º 24
0
 private void Page_Load(object sender, System.EventArgs e)
 {
     System.DateTime dateTime = System.DateTime.Now;
     string s1 = "Message_Backup_\uFFFD" + dateTime.ToString("ddMMyy_HHmmss\uFFFD") + ".zip\uFFFD";
     System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
     ICSharpCode.SharpZipLib.Zip.ZipOutputStream zipOutputStream = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(memoryStream);
     ActiveUp.Net.Mail.Mailbox mailbox = ((ActiveUp.Net.Mail.Imap4Client)Session["imapobject\uFFFD"]).SelectMailbox(Request.QueryString["b\uFFFD"]);
     char[] chArr = new char[] { ',' };
     string[] sArr = Request.QueryString["m\uFFFD"].Split(chArr);
     for (int i = 0; i < sArr.Length; i++)
     {
         string s2 = sArr[i];
         byte[] bArr = mailbox.Fetch.Message(System.Convert.ToInt32(s2));
         ActiveUp.Net.Mail.Header header = ActiveUp.Net.Mail.Parser.ParseHeader(bArr);
         ICSharpCode.SharpZipLib.Zip.ZipEntry zipEntry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(header.Subject + ".eml\uFFFD");
         zipOutputStream.PutNextEntry(zipEntry);
         zipOutputStream.SetLevel(9);
         zipOutputStream.Write(bArr, 0, bArr.Length);
         zipOutputStream.CloseEntry();
     }
     zipOutputStream.Finish();
     Response.AddHeader("Content-Disposition\uFFFD", "attachment; filename=\uFFFD" + s1);
     Response.ContentType = "application/zip\uFFFD";
     Response.BinaryWrite(memoryStream.GetBuffer());
     zipOutputStream.Close();
 }
        public static void CompressFiles(IEnumerable<ISong> files, string destinationPath)
        {
            if (log.IsDebugEnabled)
            {
                log.Debug("Starting creation of zip file : " + destinationPath);
            }

            using (ZipOutputStream zipOutputStream = new ZipOutputStream(new FileStream(destinationPath, FileMode.OpenOrCreate)))
            {
                zipOutputStream.SetLevel(0);
                foreach (ISong song in files)
                {

                    FileInfo fileInfo = new FileInfo(song.MediaFilePath);
                    ZipEntry entry = new ZipEntry(song.Artist.Name + "\\" + song.Album.Name + "\\" + song.Title + fileInfo.Extension);
                    zipOutputStream.PutNextEntry(entry);
                    FileStream fs = File.OpenRead(song.MediaFilePath);

                    byte[] buff = new byte[1024];
                    int n = 0;
                    while ((n = fs.Read(buff, 0, buff.Length)) > 0)
                    {
                        zipOutputStream.Write(buff, 0, n);

                    }
                    fs.Close();
                }
                zipOutputStream.Finish();
            }
            if (log.IsDebugEnabled)
            {
                log.Debug("Zip file created : " + destinationPath);
            }
        }
Ejemplo n.º 26
0
        public static void CreateFromDirectory(string[] sourceFileNames, string destinationArchiveFileName)
        {
            using (ZipOutputStream zipStream = new ZipOutputStream(File.Create(destinationArchiveFileName))) 
            {
                byte[] buffer = new byte[BufferSize];
                
                zipStream.SetLevel(9); 
             
                foreach (string file in sourceFileNames)
                {
                    var entryName = Path.GetFileName(file);
                    var fileInfo = new FileInfo(file);

                    ZipEntry entry = new ZipEntry(entryName);
                    entry.DateTime = fileInfo.LastWriteTime;
                    zipStream.PutNextEntry(entry);
                    
                    using (FileStream fileStream = File.OpenRead(file)) 
                    {
                        while (true)
                        {
                            int size = fileStream.Read(buffer, 0, buffer.Length);
                            if (size <= 0) 
                                break;
                            
                            zipStream.Write(buffer, 0, size);
                        }
                    }
                }
                
                zipStream.Finish();
                zipStream.Close();
            }
        }
Ejemplo n.º 27
0
        public void CreateZipFile(string[] straFilenames, string strOutputFilename)
        {
            Crc32 crc = new Crc32();
            ZipOutputStream zos = new ZipOutputStream(File.Create(strOutputFilename));

            zos.SetLevel(m_nCompressionLevel);

            foreach (string strFileName in straFilenames)
            {
                FileStream fs = File.OpenRead(strFileName);

                byte[] buffer = new byte[fs.Length];
                fs.Read(buffer, 0, buffer.Length);
                ZipEntry entry = new ZipEntry(GetFileNameWithoutDrive(strFileName));

                entry.DateTime = DateTime.Now;

                entry.Size = fs.Length;
                fs.Close();

                crc.Reset();
                crc.Update(buffer);

                entry.Crc  = crc.Value;

                zos.PutNextEntry(entry);

                zos.Write(buffer, 0, buffer.Length);
            }

            zos.Finish();
            zos.Close();
        }
Ejemplo n.º 28
0
        /// <summary>
        /// 递归压缩文件
        /// </summary>
        /// <param name="sourceFilePath">待压缩的文件或文件夹路径</param>
        /// <param name="zipStream">打包结果的zip文件路径(类似 D:\WorkSpace\a.zip),全路径包括文件名和.zip扩展名</param>
        /// <param name="staticFile"></param>
        private static void CreateZipFiles(string sourceFilePath, ZipOutputStream zipStream, string staticFile)
        {
            Crc32 crc = new Crc32();
            string[] filesArray = Directory.GetFileSystemEntries(sourceFilePath);
            foreach (string file in filesArray)
            {
                if (Directory.Exists(file))                     //如果当前是文件夹,递归
                {
                    CreateZipFiles(file, zipStream, staticFile);
                }

                else                                            //如果是文件,开始压缩
                {
                    FileStream fileStream = File.OpenRead(file);

                    byte[] buffer = new byte[fileStream.Length];
                    fileStream.Read(buffer, 0, buffer.Length);
                    string tempFile = file.Substring(staticFile.LastIndexOf("\\") + 1);
                    ZipEntry entry = new ZipEntry(tempFile);

                    entry.DateTime = DateTime.Now;
                    entry.Size = fileStream.Length;
                    fileStream.Close();
                    crc.Reset();
                    crc.Update(buffer);
                    entry.Crc = crc.Value;
                    zipStream.PutNextEntry(entry);

                    zipStream.Write(buffer, 0, buffer.Length);
                }
            }
        }
Ejemplo n.º 29
0
        public void CompressFile(string sourcePath, string destinationPath)
        {
            using (ICSharpCode.SharpZipLib.Zip.ZipOutputStream zipStream = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(File.Create(destinationPath)))
            {
                zipStream.SetLevel(9);

                byte[] buffer = new byte[4096];
                ICSharpCode.SharpZipLib.Zip.ZipEntry entry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(System.IO.Path.GetFileName(sourcePath));

                entry.DateTime = DateTime.Now;
                zipStream.PutNextEntry(entry);

                using (FileStream fs = File.OpenRead(sourcePath))
                {
                    int sourceBytes = 0;
                    do
                    {
                        sourceBytes = fs.Read(buffer, 0, buffer.Length);
                        zipStream.Write(buffer, 0, sourceBytes);
                    } while (sourceBytes > 0);
                }

                zipStream.Finish();
                zipStream.Close();
                zipStream.Dispose();
            }
        }
        public override void ExecuteResult(ControllerContext context)
        {
            string fileName = Path.GetTempFileName();

            var response = context.HttpContext.Response;

            using (var zipOutputStream = new ZipOutputStream(new FileStream(fileName, FileMode.OpenOrCreate)))
            {
                zipOutputStream.SetLevel(0);
                foreach (var photo in Photos)
                {
                    //FileInfo fileInfo = new FileInfo(photo.MediaFilePath);
                    ZipEntry entry = new ZipEntry(Tag.Name + @"\" + photo.Id + ".jpg");
                    zipOutputStream.PutNextEntry(entry);
                    using (FileStream fs = System.IO.File.OpenRead(photo.MediaFilePath))
                    {

                        byte[] buff = new byte[1024];
                        int n = 0;
                        while ((n = fs.Read(buff, 0, buff.Length)) > 0)
                            zipOutputStream.Write(buff, 0, n);
                    }
                }
                zipOutputStream.Finish();
            }

            System.IO.FileInfo file = new System.IO.FileInfo(fileName);
            response.Clear();
            response.AddHeader("Content-Disposition", "attachment; filename=" + "Photos.zip");
            response.AddHeader("Content-Length", file.Length.ToString());
            response.ContentType = "application/octet-stream";
            response.WriteFile(file.FullName);
            response.End();
            System.IO.File.Delete(fileName);
        }
Ejemplo n.º 31
0
        public static string CreateZIPFile(string path, int M, string strsuff)
        {
            try
            {
                Crc32 crc = new Crc32();//未压缩的
                ICSharpCode.SharpZipLib.Zip.ZipOutputStream zipout = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(System.IO.File.Create(path + ".zip"));

                //ICSharpCode.SharpZipLib.GZip.GZipOutputStream zipout = new GZipOutputStream(System.IO.File.Create(path+ ".zip"));
                System.IO.FileStream fs = System.IO.File.OpenRead(path + strsuff);
                long   pai    = 1024 * 1024 * M;//每M兆写一次
                long   forint = fs.Length / pai + 1;
                byte[] buffer = null;
                zipout.SetLevel(7);
                ZipEntry entry = new ZipEntry(System.IO.Path.GetFileName(path + strsuff));
                entry.Size     = fs.Length;
                entry.DateTime = DateTime.Now;
                zipout.PutNextEntry(entry);
                //zipout.
                for (long i = 1; i <= forint; i++)
                {
                    if (pai * i < fs.Length)
                    {
                        buffer = new byte[pai];
                        fs.Seek(pai * (i - 1), System.IO.SeekOrigin.Begin);
                    }
                    else
                    {
                        if (fs.Length < pai)
                        {
                            buffer = new byte[fs.Length];
                        }
                        else
                        {
                            buffer = new byte[fs.Length - pai * (i - 1)];
                            fs.Seek(pai * (i - 1), System.IO.SeekOrigin.Begin);
                        }
                    }
                    fs.Read(buffer, 0, buffer.Length);
                    crc.Reset();
                    crc.Update(buffer);
                    zipout.Write(buffer, 0, buffer.Length);
                    zipout.Flush();
                }
                fs.Close();
                zipout.Finish();
                zipout.Close();

                System.IO.File.Delete(path + strsuff);
                // File.Create(path.Replace(".doc","") + ".zip",buffer.Length);
                return(path + ".zip");
            }
            catch (Exception ex)
            {
                string str = ex.Message;
                return(path);
            }
        }
Ejemplo n.º 32
0
        /// <summary>
        /// 压缩文件(多文件)
        /// </summary>
        /// <param name="FileToZipList">要压缩的文件名集合</param>
        /// <param name="ZipedFile">生成的压缩文件路径</param>
        /// <param name="BlockSize">缓存块大小</param>
        public static void MultiFilesZip(IList<string> FileToZipList, string ZipedFile, int BlockSize)
        {
            FileStream ZipFile = File.Create(ZipedFile);
            ZipOutputStream ZipStream = new ZipOutputStream(ZipFile);

            try
            {
                foreach (string FileToZip in FileToZipList)
                {
                    //如果文件没有找到,则报错
                    if (!File.Exists(HttpContext.Current.Server.MapPath("/" + FileToZip)))
                    {
                        MongoDBLog.LogRecord(new Exception("压缩文件未找到!"));
                        continue;
                    }
                    FileStream StreamToZip = new FileStream
                    (HttpContext.Current.Server.MapPath("/" + FileToZip), FileMode.Open, FileAccess.Read);

                    ZipEntry ZipEntry = new ZipEntry(Path.GetFileName(FileToZip));
                    ZipStream.PutNextEntry(ZipEntry);
                    byte[] buffer = new byte[BlockSize];
                    System.Int32 size = StreamToZip.Read(buffer, 0, buffer.Length);
                    HttpContext.Current.Response.Write(StreamToZip.Length);
                    ZipStream.Write(buffer, 0, size);
                    while (size < StreamToZip.Length)
                    {
                        int sizeRead = StreamToZip.Read(buffer, 0, buffer.Length);
                        ZipStream.Write(buffer, 0, sizeRead);
                        size += sizeRead;
                    }
                    StreamToZip.Close();
                }
            }
            catch (Exception ex)
            {
                MongoDBLog.LogRecord(ex);
            }
            finally
            {
                ZipStream.Finish();
                ZipStream.Close();
            }
        }
Ejemplo n.º 33
0
 //[Authorize(Roles = "Admin")]
 public ActionResult ListarReporte(ListarReporteFormModel FORM)
 {
     ListarReporteViewModel model = new ListarReporteViewModel(FORM);
     if (FORM.IdTipoReportes == null || (FORM.IdTipoReportes != null && !FORM.IdTipoReportes.Any()))
     {
         ModelState.AddModelError("FORM.IdTipoReportes", "Debe elegir almenos un tipode reporte.");
     }
     if (ModelState.IsValid)
     {
         // Armamos nuestro archivo de salida por empresa y departamento
         MemoryStream outputMemStream = new MemoryStream();
         ZipOutputStream zipStream = new ZipOutputStream(outputMemStream);
         zipStream.SetLevel(3); //0-9, 9 being the highest level of compression
         using (Stream memOutput = new MemoryStream())
         using (ZipOutputStream zipOutput = new ZipOutputStream(memOutput))
         {
             zipOutput.SetLevel(3); //0-9, 9 being the highest level of compression
             foreach (var tipoEmpresa in FORM.Empresa)
             {
                 var empresa = db.EMPRESAs.SingleOrDefault(x => x.Codigo == tipoEmpresa);
                 IEnumerable<string> tipoDepartamentos = FORM.Departamento.Where(x=> x.Substring(0,2).Trim() == tipoEmpresa.Trim());
                 foreach(var tipoDepartamento in tipoDepartamentos)
                 {
                     string codigoDepartamento = tipoDepartamento.Substring(2,2).Trim();
                     var departamento = db.vw_Ubicaciones.FirstOrDefault(x => x.IdEmpresa == tipoEmpresa && x.Codigo.Trim() == codigoDepartamento);
                     foreach (var tipoReporte in FORM.IdTipoReportes)
                     {
                         ArchivoReporteFactoria archivoReporteFactoria = new ArchivoReporteFactoria();
                         IArchivoReporte archivoReporte = archivoReporteFactoria.CrearArchivoReporteFactoria(
                             tipoReporte,
                             db,
                             empresa,
                             departamento,
                             FORM.FechaDesde.Value,
                             FORM.FechaHasta.Value,
                             HttpContext.Server.MapPath("~/Content")
                             , FORM.Rut);
                         if (archivoReporte.GetArchivo() != null)
                         {
                             zipOutput.PutNextEntry(archivoReporte.GetZipArchivoReporte());
                             zipOutput.Write(archivoReporte.GetArchivo(), 0, archivoReporte.GetArchivoLength());
                         }
                     }
                 }
             }
             zipOutput.Finish();
             byte[] newBytes = new byte[memOutput.Length];
             memOutput.Seek(0, SeekOrigin.Begin);
             memOutput.Read(newBytes, 0, newBytes.Length);
             zipOutput.Close();
             return File(newBytes, "application/zip", "Reportes -" + FORM.FechaDesde.Value.ToShortDateString() + " - " + FORM.FechaHasta.Value.ToShortDateString() + ".zip");
         }
     }
     return View(model);
 }
Ejemplo n.º 34
0
        /// <summary>
        /// Create a zip file.
        /// </summary>
        /// <param name="fileNames"></param>
        /// <param name="outputZipFile">Create a zipfile. it will override the existed files.</param>
        /// <returns></returns>
        public Boolean ZipFile(String[] fileNames,String outputZipFile)
        {
            try
		    {
			    // 'using' statements gaurantee the stream is closed properly which is a big source
			    // of problems otherwise.  Its exception safe as well which is great.
                using (ZipOutputStream s = new ZipOutputStream(File.Create(outputZipFile)))
                { 			
				    s.SetLevel(9); // 0 - store only to 9 - means best compression
    		
				    byte[] buffer = new byte[4096];

                    foreach (String file in fileNames)
                    {	
					    // Using GetFileName makes the result compatible with XP
					    // as the resulting path is not absolute.
					    ZipEntry entry = new ZipEntry(Path.GetFileName(file));
    					
					    // Setup the entry data as required.
    					
					    // Crc and size are handled by the library for seakable streams
					    // so no need to do them here.

					    // Could also use the last write time or similar for the file.
					    entry.DateTime = DateTime.Now;
					    s.PutNextEntry(entry);
    					
					    using ( FileStream fs = File.OpenRead(file) ) {
    		
						    // Using a fixed size buffer here makes no noticeable difference for output
						    // but keeps a lid on memory usage.
						    int sourceBytes;
						    do {
							    sourceBytes = fs.Read(buffer, 0, buffer.Length);
							    s.Write(buffer, 0, sourceBytes);
						    } while ( sourceBytes > 0 );
					    }
				    }
    				
				    // Finish/Close arent needed strictly as the using statement does this automatically
    				
				    // Finish is important to ensure trailing information for a Zip file is appended.  Without this
				    // the created file would be invalid.
				    s.Finish();
    				
				    // Close is important to wrap things up and unlock the file.
				    s.Close();
			    }
		    }
		    catch(Exception ex)
		    {
                return false;
		    }
            return true;
        }
        /// <summary>
        /// 压缩多个文件/文件夹
        /// </summary>
        /// <param name="comment">注释信息</param>
        /// <param name="password">压缩密码</param>
        /// <param name="compressionLevel">压缩等级,范围从0到9,可选,默认为6</param>
        /// <param name="filePaths">压缩文件路径</param>
        /// <returns></returns>
        private MemoryStream CreateZip(string comment, string password, int compressionLevel, params string[] filePaths)
        {
            MemoryStream memoryStream = new MemoryStream();

            using (SharpZipLib.ZipOutputStream zipStream = new SharpZipLib.ZipOutputStream(memoryStream))
            {
                if (!string.IsNullOrWhiteSpace(password))
                {
                    zipStream.Password = password;//设置密码
                }

                if (!string.IsNullOrWhiteSpace(comment))
                {
                    zipStream.SetComment(comment);//添加注释
                }

                //设置压缩级别
                zipStream.SetLevel(compressionLevel);

                foreach (string item in filePaths)//从字典取文件添加到压缩文件
                {
                    //如果不是文件直接跳过不打包
                    if (!File.Exists(item))
                    {
                        continue;
                    }

                    FileInfo fileInfo = new FileInfo(item);

                    using (FileStream fileStream = fileInfo.Open(FileMode.Open, FileAccess.Read, FileShare.Read))
                    {
                        SharpZipLib.ZipEntry zipEntry = new SharpZipLib.ZipEntry(Path.GetFileName(item));

                        zipEntry.DateTime = fileInfo.LastWriteTime;

                        zipEntry.Size = fileStream.Length;

                        zipStream.PutNextEntry(zipEntry);

                        int readLength = 0;

                        byte[] buffer = new byte[bufferSize];

                        do
                        {
                            readLength = fileStream.Read(buffer, 0, bufferSize);
                            zipStream.Write(buffer, 0, readLength);
                        }while (readLength == bufferSize);
                    }
                }
            }

            return(memoryStream);
        }
Ejemplo n.º 36
0
 /// <summary>
 /// 压缩文件(Zip)
 /// </summary>
 /// <param name="filesPath">待压缩文件目录</param>
 /// <param name="zipFilePath">压缩文件输出目录</param>
 /// <returns></returns>
 public static ZipInfo CreateZipFile(string filesPath, string zipFilePath)
 {
     if (!System.IO.Directory.Exists(filesPath))
     {
         return(new ZipInfo
         {
             Success = false,
             InfoMessage = "没有找到文件"
         });
     }
     try
     {
         string[] filenames = System.IO.Directory.GetFiles(filesPath);
         using (ICSharpCode.SharpZipLib.Zip.ZipOutputStream s = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(File.Create(zipFilePath)))
         {
             s.SetLevel(9);                  // 压缩级别 0-9
             //s.Password = "******"; //Zip压缩文件密码
             byte[] buffer = new byte[4096]; //缓冲区大小
             foreach (string file in filenames)
             {
                 ICSharpCode.SharpZipLib.Zip.ZipEntry entry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(Path.GetFileName(file));
                 entry.DateTime = DateTime.Now;
                 s.PutNextEntry(entry);
                 using (FileStream fs = File.OpenRead(file))
                 {
                     int sourceBytes;
                     do
                     {
                         sourceBytes = fs.Read(buffer, 0, buffer.Length);
                         s.Write(buffer, 0, sourceBytes);
                     } while (sourceBytes > 0);
                 }
             }
             s.Finish();
             s.Close();
         }
         return(new ZipInfo
         {
             Success = true,
             InfoMessage = "压缩成功"
         });
     }
     catch (Exception ex)
     {
         return(new ZipInfo
         {
             Success = false,
             InfoMessage = ex.Message
         });
     }
 }
Ejemplo n.º 37
0
        public static Boolean ZipFile(String filePath, String zipFile)
        {
            if (!File.Exists(filePath))
            {
                Debug.WriteLine("Cannot find file '{0}'", filePath);
                return(false);
            }

            try
            {
                using (ICSharpCode.SharpZipLib.Zip.ZipOutputStream zipStream = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(File.Create(zipFile)))
                {
                    zipStream.SetLevel(9);         //0~9

                    byte[] buffer = new byte[4096];
                    ICSharpCode.SharpZipLib.Zip.ZipEntry entry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(System.IO.Path.GetFileName(filePath));

                    entry.DateTime = DateTime.Now;
                    zipStream.PutNextEntry(entry);

                    using (FileStream fs = File.OpenRead(filePath))
                    {
                        int sourceBytes = 0;
                        do
                        {
                            sourceBytes = fs.Read(buffer, 0, buffer.Length);
                            zipStream.Write(buffer, 0, sourceBytes);
                        } while (sourceBytes > 0);
                    }

                    zipStream.Finish();
                    zipStream.Close();
                    zipStream.Dispose();
                }

                if (File.Exists(zipFile))
                {
                    return(true);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Exception during processing {0}", ex);
            }
            return(false);
        }
Ejemplo n.º 38
0
 /// <summary>
 /// 压缩
 /// </summary>
 /// <param name="sourceBytes">待压缩数据</param>
 /// <returns></returns>
 public static byte[] Zip(byte[] sourceBytes)
 {
     using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
     {
         using (ICSharpCode.SharpZipLib.Zip.ZipOutputStream zs = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(ms))
         {
             ICSharpCode.SharpZipLib.Zip.ZipEntry entry = new ICSharpCode.SharpZipLib.Zip.ZipEntry("Code")
             {
                 DateTime = DateTime.Now
             };
             zs.PutNextEntry(entry);
             zs.Write(sourceBytes, 0, sourceBytes.Length);
             zs.Flush();
         }
         return(ms.ToArray());
     }
 }
Ejemplo n.º 39
0
 private String CompressionDossier(String pFichier)
 {
     try
     {
         if (Directory.Exists(pFichier) == true)
         {
             //System.IO.Compression.GZipStream gzip = new System.IO.Compression.GZipStream();
             using (var s = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(File.Create(String.Format("{0}.zip", pFichier))))
             {
                 s.SetLevel(9);
                 var buffer = new byte[4096];
                 var entry  = new ICSharpCode.SharpZipLib.Zip.ZipEntry(pFichier)
                 {
                     DateTime = DateTime.Now
                 };
                 s.PutNextEntry(entry);
                 using (StreamReader fs = new StreamReader(pFichier))
                 {
                     int sourceBytes;
                     do
                     {
                         sourceBytes = fs.Read();
                         s.Write(buffer, 0, sourceBytes);
                     } while (sourceBytes > 0);
                 }
                 s.Finish();
                 s.Close();
                 s.Dispose();
                 pFichier = string.Format("{0}.zip", pFichier);
             }
             //}
         }
         return(pFichier);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
Ejemplo n.º 40
0
        }// ZipFile

        /// <summary>
        /// Zip multiple files(fileNames) in directory(directory) to (flowName).zip.
        /// </summary>
        /// <param name="directory"></param>
        /// <param name="fileNames"></param>
        /// <param name="reportName"></param>
        public static void PackFilesIntoOne(string directory, string[] fileNames, string outputFilename)
        {
            if (directory == null)
            {
                throw new ArgumentNullException("directory");
            }
            if (fileNames == null)
            {
                throw new ArgumentNullException("fileNames");
            }
            if (outputFilename == null)
            {
                throw new ArgumentNullException("outputFilename");
            }
            if (fileNames.Length == 0)
            {
                throw new ArgumentException("Length cannot be 0.", "fileNames");
            }

            string newFilename = Path.Combine(directory, outputFilename);

            if (File.Exists(newFilename))
            {
                File.Delete(newFilename);
            }

            using (FileStream fileStreamOut = File.Create(newFilename))
            {
                using (ICSharpCode.SharpZipLib.Zip.ZipOutputStream zipOutputStream = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(fileStreamOut))
                {
                    zipOutputStream.SetLevel(9);

                    foreach (string filename in fileNames)
                    {
                        ICSharpCode.SharpZipLib.Zip.ZipEntry zipEntry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(filename);
                        zipOutputStream.PutNextEntry(zipEntry);

                        using (FileStream fileStreamIn = File.OpenRead(Path.Combine(directory, filename)))
                        {
                            const long BUFFER_SIZE  = 8192;
                            long       currentIndex = 0;
                            byte[]     buffer       = new byte[BUFFER_SIZE];
                            if (fileStreamIn.Length <= BUFFER_SIZE)
                            {
                                fileStreamIn.Read(buffer, 0, Convert.ToInt32(fileStreamIn.Length));
                                zipOutputStream.Write(buffer, 0, Convert.ToInt32(fileStreamIn.Length));
                            }
                            else
                            {
                                do
                                {
                                    long remaining = BUFFER_SIZE;
                                    if (currentIndex + BUFFER_SIZE >= fileStreamIn.Length)
                                    {
                                        remaining = fileStreamIn.Length - currentIndex;
                                    }
                                    fileStreamIn.Read(buffer, 0, Convert.ToInt32(remaining));
                                    currentIndex += remaining;

                                    zipOutputStream.Write(buffer, 0, Convert.ToInt32(remaining));
                                } while (currentIndex < fileStreamIn.Length);
                            }
                        } // using ( FileStream fileStreamIn = File.OpenRead( Path.Combine( directory, filename ) ...
                    }     // foreach

                    zipOutputStream.Flush();
                    zipOutputStream.Finish();
                } //using ( ICSharpCode.SharpZipLib.Zip.ZipOutputStream zipOutputStream = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream( fileStreamOut ) ) ...
            }     // using ( FileStream fileStreamOut = File.Create( newFilename ) ...
        }
    protected void btnExport_Click(object sender, EventArgs e)
    {
        string xType = ddlExportType.SelectedItem.Text;
        bool   xPack = ckbExportMulti.Checked;

        if (xPack)
        {
            Master.Log.Info("Creating package: " + txtZipName.Text);
            if (txtZipName.Text == "")
            {
                lblFNError.Visible = true;
                return;
            }
            else
            {
                lblFNError.Visible = false;
            }

            using (MemoryStream OutputStream = new MemoryStream())
            {
                // Setup Zip Stream
                string zipFileName = txtZipName.Text + ".osapkg";
                ICSharpCode.SharpZipLib.Zip.ZipOutputStream zipStream = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(OutputStream);
                zipStream.SetLevel(3);
                zipStream.UseZip64 = ICSharpCode.SharpZipLib.Zip.UseZip64.On;
                // Add each object on list to Zip in reverse order.
                int lstCount = lstFileList.Items.Count;
                if (lstCount > 0)
                {
                    //foreach (ListItem lstItem in lstFileList.Items)
                    while (lstCount > 0)
                    {
                        ListItem lstItem = lstFileList.Items[lstCount - 1];
                        int      iSplit  = lstItem.Text.IndexOf("::");
                        string[] args    = new string[2]; //lstItem.Text.Split(':',':');
                        args[0] = lstItem.Text.Substring(0, iSplit);
                        args[1] = lstItem.Text.Substring(iSplit + 2);
                        ExportObject xObj = new ExportObject(args[0], args[1]);
                        Master.Log.Info("Adding file: " + xObj.ExportFileName + " to package: " + txtZipName.Text);
                        ICSharpCode.SharpZipLib.Zip.ZipEntry zipEntry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(xObj.ExportFileName);
                        zipEntry.DateTime = DateTime.Now;
                        zipEntry.Size     = xObj.byteData.Length;
                        zipStream.PutNextEntry(zipEntry);
                        zipStream.Write(xObj.byteData, 0, xObj.byteData.Length);
                        zipStream.Flush();
                        zipStream.CloseEntry();
                        lstCount = lstCount - 1;
                    }
                }

                // Finish up Zip
                zipStream.IsStreamOwner = false;
                zipStream.Close();
                OutputStream.Position = 0;
                byte[] byteArray = OutputStream.GetBuffer();
                Int64  leng      = byteArray.Length;
                Response.Clear();
                Response.AppendHeader("Content-Disposition", "attachment; filename=" + zipFileName);
                Response.AppendHeader("Content-Length", leng.ToString());
                Response.ContentType = "application/zip";
                Response.BinaryWrite(byteArray);
                Response.Flush();
                Master.Log.Info("Exported package: " + txtZipName.Text + " - By User: "******"Username"]);
            }
        }
        else
        {
            // Only 1 File
            lstFileList.Items.Clear();
            ExportObject sExport = new ExportObject(ddlObjToExport.SelectedValue, ddlExportType.SelectedValue);
            Master.Log.Info("Exporting File: " + sExport.ExportFileName + " - By User: "******"Username"]);
            Response.Clear();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", "attachment;filename=\"" + sExport.ExportFileName + "\"");
            Response.Charset = "";
            if (sExport.DataType == "Text")
            {
                Response.ContentType = "application/text";
                StringBuilder sb = new StringBuilder(sExport.stringData);
                Response.Output.Write(sb.ToString());
            }
            else if (sExport.Type == "Image")
            {
                Response.ContentType = "image/" + Path.GetExtension(sExport.ExportFileName);
                Response.BinaryWrite(sExport.byteData);
            }
            else
            {
                Response.ContentType = "application/octet-stream";
                Response.AppendHeader("Content-Length", sExport.ByteSize.ToString());
                Response.BinaryWrite(sExport.byteData);
            }
            Response.Flush();
            Response.End();
            //Master.Log.Info("Exported file: " + sExport.ExportFileName + " - By User: "******"Username"]);
        }
        btnClear_Click(this, null);
    }
Ejemplo n.º 42
0
        }                 // Unpack

        /// <summary>
        /// Zip a file.
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="appendZipExtension"></param>
        public static void PackFile(string filename, bool appendZipExtension)
        {
            if (filename == null)
            {
                throw new ArgumentNullException("filename");
            }
            if (!File.Exists(filename))
            {
                throw new ArgumentException(string.Format("File does not exist: {0}.", filename), "filename");
            }

            string newFilename = filename + ".zip";

            if (!appendZipExtension)
            {
                newFilename = Path.GetDirectoryName(filename) + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(filename) + ".zip";
            }
            if (File.Exists(newFilename))
            {
                File.Delete(newFilename);
            }

            FileStream fileStreamOut = File.Create(newFilename);

            ICSharpCode.SharpZipLib.Zip.ZipOutputStream zipOutputStream = new ICSharpCode.SharpZipLib.Zip.ZipOutputStream(fileStreamOut);
            zipOutputStream.SetLevel(9);

            ICSharpCode.SharpZipLib.Zip.ZipEntry zipEntry = new ICSharpCode.SharpZipLib.Zip.ZipEntry(Path.GetFileName(filename));
            zipOutputStream.PutNextEntry(zipEntry);

            FileStream fileStreamIn = File.OpenRead(filename);
            const long BUFFER_SIZE  = 8192;
            long       currentIndex = 0;

            byte[] buffer = new byte[BUFFER_SIZE];
            if (fileStreamIn.Length <= BUFFER_SIZE)
            {
                fileStreamIn.Read(buffer, 0, Convert.ToInt32(fileStreamIn.Length));
                zipOutputStream.Write(buffer, 0, Convert.ToInt32(fileStreamIn.Length));
            }
            else
            {
                do
                {
                    long remaining = BUFFER_SIZE;
                    if (currentIndex + BUFFER_SIZE >= fileStreamIn.Length)
                    {
                        remaining = fileStreamIn.Length - currentIndex;
                    }
                    fileStreamIn.Read(buffer, 0, Convert.ToInt32(remaining));
                    currentIndex += remaining;

                    zipOutputStream.Write(buffer, 0, Convert.ToInt32(remaining));
                } while (currentIndex < fileStreamIn.Length);
            }
            fileStreamIn.Close();

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

            fileStreamOut.Close();
        }// ZipFile