我是用的sharpziplib的压缩方法,但是压缩后 系统自带的ziped提取不出文件,也不报错,显示为空,也不知道是不是哪里写错了。但是用winrar和其他的7-zip等都可以。
尝试用.net自带的IO.Compression,但是好像只能压缩单个文件。。
谁知道怎么搞?下面是我的压缩方法:
/// <summary>
        /// 使用isharpziplib压缩文件
        /// </summary>
        /// <param name="rootDir">需要打包文件的顶级目录(结尾不含//)</param>
        /// <param name="fileList">打包的文件(夹)的全路径列表</param>
        /// <param name="filePath">目标压缩文件</param>
        /// <returns></returns>
        public static void CompressFile(string topDirName, List<string> fileNamesToZip, string ZipedFileName)
        {
            List<string> fileList = new List<string>();
            foreach (string ss in fileNamesToZip)
            {
                string filename = ss.Replace(topDirName, "");
                if (FileHelper.IsDir(ss))
                {
                    fileList.AddRange(GetFileAndDir(ss, topDirName));
                }
                else
                {
                    fileList.Add(filename);
                }
            }
            using (ZipOutputStream s = new ZipOutputStream(System.IO.File.Open(ZipedFileName, FileMode.Create)))
            {
                s.SetLevel(6);
                foreach (string file in fileList)
                {
                    if (FileHelper.IsDir(topDirName + file)) //如果是文件夹 folder
                    {
                        ZipEntry entry = new ZipEntry(file + "\\");
                        entry.DateTime = DateTime.Now;
                        s.PutNextEntry(entry);
                    }
                    else  //文件
                    {
                        using (FileStream fs = File.OpenRead(topDirName + file))    //打开待压缩文件  
                        {
                            byte[] buffer = new byte[fs.Length];
                            fs.Read(buffer, 0, buffer.Length);      //读取文件流  
                            ZipEntry entry = new ZipEntry(file);    //新建实例 
                            entry.DateTime = DateTime.Now;
                            entry.Size = fs.Length;
                            fs.Close();
                            s.PutNextEntry(entry);
                            s.Write(buffer, 0, buffer.Length);
                        }
                    }
                }
            }
        }压缩