Ervin Slavotic

Ervin Slavotic

  • NA
  • 10
  • 10.1k

SEVENZIP FOLDER COMPRESSION. USING SEVENZIP DLLS

Apr 29 2013 11:37 AM
Hi All,

I need help in this code... for compressing directories in c# using sevensharp dlls.  http://sevenzipsharp.codeplex.com/  ...
so far the follwing code will create an empyt archvie... so how to add files to it?...



class SevenSync
    {
        public void CompressFolder(string FolderToCompress, string destination)
        {
            List<string> subfiles = new List<string>(Directory.GetFiles(FolderToCompress));
            FileInfo fi = new FileInfo(FolderToCompress);
            StringBuilder output_7zip_File = new StringBuilder(FolderToCompress + Path.DirectorySeparatorChar + fi.Name + @".7z");
            string output_stringBuilder = output_7zip_File.ToString();

            Console.WriteLine("Output destination : " + output_stringBuilder);

            

            foreach (string file in subfiles)
            {
                Console.WriteLine("Files to Compress : " + file);
               // compressor.BeginCompressFiles(output_stringBuilder, file);
                CompressFileLZMA(file, output_stringBuilder);
                AddToArchive(file);
            }


            
        }


        //___________________________________________________________
        ////////////////////////////////////////////////////////////|
        //         C O M P R E S S  F I L E                         |                                           
        //_________using LZMA algo__________________________________|
        ////////////////////////////////////////////////////////////|
        public void CompressFileLZMA(string inFile, string outFile)
        {
            Int32 dictionary = 1 << 23;
            Int32 posStateBits = 2;
            Int32 litContextBits = 3; // for normal files
            // UInt32 litContextBits = 0; // for 32-bit data
            Int32 litPosBits = 0;
            // UInt32 litPosBits = 2; // for 32-bit data
            Int32 algorithm = 2;
            Int32 numFastBytes = 128;

            string mf = "bt4";
            bool eos = true;
            bool stdInMode = false;


            CoderPropID[] propIDs =  {
                CoderPropID.DictionarySize,
                CoderPropID.PosStateBits,
                CoderPropID.LitContextBits,
                CoderPropID.LitPosBits,
                CoderPropID.Algorithm,
                CoderPropID.NumFastBytes,
                CoderPropID.MatchFinder,
                CoderPropID.EndMarker
            };
            
            object[] properties = {
                (Int32)(dictionary),
                (Int32)(posStateBits),
                (Int32)(litContextBits),
                (Int32)(litPosBits),
                (Int32)(algorithm),
                (Int32)(numFastBytes),
                mf,
                eos
            };


            try
            {
                using (FileStream inStream = new FileStream(inFile, FileMode.Open))
                {
                    using (FileStream outStream = new FileStream(outFile, FileMode.Create))
                    {
                        SevenZip.Compression.LZMA.Encoder encoder = new SevenZip.Compression.LZMA.Encoder();
                        encoder.SetCoderProperties(propIDs, properties);
                        encoder.WriteCoderProperties(outStream);
                        Int64 fileSize;
                        if (eos || stdInMode)
                            fileSize = -1;
                        else
                            fileSize = inStream.Length;
                        for (int i = 0; i < 8; i++)
                        {
                            outStream.WriteByte((Byte)(fileSize >> (8 * i)));


                        }
                        encoder.Code(inStream, outStream, -1, -1, null);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("ERROR : " + e.Message);
            }


        }

        
        //___________________________________________________________
        ////////////////////////////////////////////////////////////|
        //       A D D   TO   A R C H I V E                         |                                           
        //__________________________________________________________|
        ////////////////////////////////////////////////////////////|

        public void AddToArchive(string archiveFile)
        {


            

        }


    }




thanks alot 

regards

Answers (7)