网上一搜都是压缩一个文件的。
文件侠怎么压缩。
比如A目录下,有B,C目录,要压缩A目录成A.zip

解决方案 »

  1.   

    里面有FastZip类,里面有快速创建压缩
      

  2.   

      public class ZipDAO
        {
            public string file;
            public ZipDAO(string dir)
            {
                Console.WriteLine("开始压缩.....");
                file = dir;
            }        public void ZipFold()
            {
                //获得压缩的文件夹
                //压缩文件夹的名字
                string name = file + ".rar";
                //压缩文件的流对象
                // MessageBox.Show(name);
                ZipOutputStream output = new ZipOutputStream(File.Create(name));
                output.SetLevel(6);
                string[] dir = Directory.GetFiles(file);
                //存放文件数据
                 Crc32 crc = new Crc32();
                foreach (string myFile in dir)
                {
                    FileStream fs = new FileStream(myFile, FileMode.Open, FileAccess.Read);
                    byte[] bt = new byte[fs.Length];
                    fs.Read(bt, 0, bt.Length);
                    //存储要压缩的文件
                    ZipEntry entry = new ZipEntry(myFile.Substring(myFile.Length - 41, 41));
                    entry.Size = fs.Length;
                    entry.DateTime = DateTime.Now;
                    fs.Close();
                    crc.Reset();  //清除crc内容
                    crc.Update(bt);  //更新文件内容到crc中
                    entry.Crc = crc.Value;   //将文件内容放到压缩文件中
                    output.PutNextEntry(entry);
                    //将数据写入压缩流中
                    output.Write(bt, 0, bt.Length);
                }
                output.Close();
                Console.WriteLine("压缩成功!");
            }
        }
      

  3.   

      public class ZipDAO
        {
            public string file;
            public ZipDAO(string dir)
            {
                Console.WriteLine("开始压缩.....");
                file = dir;
            }        public void ZipFold()
            {
                //获得压缩的文件夹
                //压缩文件夹的名字
                string name = file + ".rar";
                //压缩文件的流对象
                // MessageBox.Show(name);
                ZipOutputStream output = new ZipOutputStream(File.Create(name));
                output.SetLevel(6);
                string[] dir = Directory.GetFiles(file);
                //存放文件数据
                 Crc32 crc = new Crc32();
                foreach (string myFile in dir)
                {
                    FileStream fs = new FileStream(myFile, FileMode.Open, FileAccess.Read);
                    byte[] bt = new byte[fs.Length];
                    fs.Read(bt, 0, bt.Length);
                    //存储要压缩的文件
                    ZipEntry entry = new ZipEntry(myFile.Substring(myFile.Length - 41, 41));
                    entry.Size = fs.Length;
                    entry.DateTime = DateTime.Now;
                    fs.Close();
                    crc.Reset();  //清除crc内容
                    crc.Update(bt);  //更新文件内容到crc中
                    entry.Crc = crc.Value;   //将文件内容放到压缩文件中
                    output.PutNextEntry(entry);
                    //将数据写入压缩流中
                    output.Write(bt, 0, bt.Length);
                }
                output.Close();
                Console.WriteLine("压缩成功!");
            }
        }