C#压缩文件夹

news/2024/10/20 1:21:23/


         在需要的地方直接调用就可  CompressDirectory(newpath,  true);
       
        /// 压缩文件夹   
        /// 要打包的文件夹   
        /// 是否删除原文件夹 
        public static void CompressDirectory(string dirPath,  bool deleteDir)
        {
            //压缩文件路径
            string pCompressPath = dirPath + ".zip";
            //创建压缩文件
            FileStream pCompressFile = new FileStream(pCompressPath, FileMode.Create);
            using (ZipOutputStream zipoutputstream = new ZipOutputStream(pCompressFile))
            {
                Crc32 crc = new Crc32();
                Dictionary<string, DateTime> fileList = GetAllFies(dirPath);
                foreach (KeyValuePair<string, DateTime> item in fileList)
                {
                    FileStream fs = new FileStream(item.Key.ToString(), FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                    // FileStream fs = File.OpenRead(item.Key.ToString());
                    byte[] buffer = new byte[fs.Length];
                    fs.Read(buffer, 0, buffer.Length);
                    ZipEntry entry = new ZipEntry(item.Key.Substring(dirPath.Length));
                    entry.DateTime = item.Value;
                    entry.Size = fs.Length;
                    fs.Close();
                    crc.Reset();
                    crc.Update(buffer);
                    entry.Crc = crc.Value;
                    zipoutputstream.PutNextEntry(entry);
                    zipoutputstream.Write(buffer, 0, buffer.Length);
                }
            }
            if (deleteDir)
            {
                Directory.Delete(dirPath, true);
            }
        }
        ///    
        /// 获取所有文件   
        ///    
        ///    
        private static Dictionary<string, DateTime> GetAllFies(string dir)
        {
            Dictionary<string, DateTime> FilesList = new Dictionary<string, DateTime>();
            DirectoryInfo fileDire = new DirectoryInfo(dir);
            if (!fileDire.Exists)
            {
                throw new System.IO.FileNotFoundException("目录:" +fileDire.FullName + "没有找到!");
            }
            GetAllDirFiles(fileDire, FilesList);
            GetAllDirsFiles(fileDire.GetDirectories(), FilesList);
            return FilesList;
        }
        ///    
        /// 获取一个文件夹下的所有文件夹里的文件   
        ///    
        ///    
        ///    
        private static void GetAllDirsFiles(DirectoryInfo[] dirs, Dictionary<string, DateTime> filesList)
        {
            foreach (DirectoryInfo dir in dirs)
            {
                foreach (FileInfo file in dir.GetFiles("."))
                {
                    filesList.Add(file.FullName, file.LastWriteTime);
                }
                GetAllDirsFiles(dir.GetDirectories(), filesList);
            }
        }
        ///    
        /// 获取一个文件夹下的文件   
        ///    
        /// 目录名称   
        /// 文件列表HastTable   
        private static void GetAllDirFiles(DirectoryInfo dir, Dictionary<string, DateTime> filesList)
        {
            foreach (FileInfo file in dir.GetFiles())
            {
                filesList.Add(file.FullName, file.LastWriteTime);
            }
        }


http://www.ppmy.cn/news/785879.html

相关文章

文件夹压缩为war包

在压缩的文件夹内打开cmd命令窗口 压缩命令 jar -cvf Foldername.war * war * 之间有空格

linux在服务器压缩文件夹,Linux服务器压缩文件夹

我们需要从Linux服务器上下载文件夹时&#xff0c;若文件夹内小文件较多&#xff0c;往往下载慢&#xff0c;例如日志文件夹。下载前将文件夹打包是个比较好的选择 下面提供两种压缩文件夹的方式&#xff1a; 1.使用WinSCP客户端 右键需要压缩的文件夹&#xff0c;文件自定义命…

php 解压 中文文件夹,如何把文件夹压缩为rar

把文件夹压缩为rar的方法&#xff1a;首先打开电脑&#xff0c;找到要压缩的目标文件&#xff1b;然后右击文件&#xff0c;在弹出选项框中选择“发送到”&#xff0c;再选择“压缩(zipped)文件夹”&#xff1b;接着右击“百度经验”压缩文件&#xff0c;并点击“工具”&#x…

路径规划算法:基于闪电连接过程优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于闪电连接过程优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于闪电连接过程优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用…

linux下把文件夹压缩成tar.gz的命令

https://blog.csdn.net/wusecaiyun/article/details/46984201 解压tarzxvf 文件名.tar.gz 压缩 tar zcvf 文件名.tar.gz 待压缩的文件名

error C1004 发现意外的文件尾

error C1004: 发现意外的文件尾 后来发现头文件引用放在类的后面引起的 经过多次测试&#xff0c;发现头文件引用还是放在文件最上面比较好。 放在文件中间或放在函数内部都可能引起问题。

意外的文件尾报错

意外的文件尾报错 class {}出错原因class后没有加分号 正确书写 class {};

PS CS6安装过程中安装程序遇到错误(37).请重新启动计算机,然后重试.

解决方法&#xff1a; 首先查看自己电脑是32位还是64位&#xff0c;计算机&#xff08;我的电脑&#xff09;——》右键“属性”——》系统“系统类型”。 然后在自己的Photoshop安装目录找到下面对应的两个文件夹&#xff0c;删除即可。如果删除时提示没有系统管理员权限&…