首页 > 其他分享 >文件复制/解压

文件复制/解压

时间:2024-12-27 12:54:15浏览次数:1  
标签:解压 文件 Name 文件夹 复制 Directory entry directoryName

//--------------------复制文件

//复制文件中有多个文件夹情况之下
   private static bool CopyDirectory(string downLoadPath, string WinClientPath)
    {
        try
        {
            DirectoryInfo dir = new DirectoryInfo(downLoadPath);
            FileSystemInfo[] fileAll = dir.GetFileSystemInfos(); //获取目录下(不包含子目录)的文件和子目录
            //获取目录下所有的文件
            FileSystemInfo[] fileinfo = dir.GetFiles();
            //将查询当前目录的所有文件复制
            foreach (FileSystemInfo i in fileinfo)
            {
                File.Copy(i.FullName, WinClientPath + "//" + i.Name, true); //不是文件夹即复制文件,true表示可以覆盖同名文件
            }
            //将当前查询的所有文件夹创建
            foreach (FileSystemInfo i in fileAll)
            {
                if (i is DirectoryInfo) //判断是否文件夹
                {
                    if (!Directory.Exists(WinClientPath + "\\" + i.Name))
                    {
                        Directory.CreateDirectory(WinClientPath + "\\" + i.Name); //目标目录下不存在此文件夹即创建子文件夹

                    }
                    //文件夹创建后循环copyDiretory对子目录进行分析
                    CopyDirectory(i.FullName, WinClientPath + "\\" + i.Name); 
                }
            }
            //复制完成后删除download文件夹
            dir.Delete(true);
            return true;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            return false;
        }
    }

//--------------------解压文件------

//解压文件中有多个文件夹情况之下
  private static bool Unzip(string address, string filezip)
    {
        try
        {
            string directoryName = Path.GetFullPath(address);
            if (!Directory.Exists(directoryName)) { Directory.CreateDirectory(directoryName); }
            //打开读取文件
            using (FileStream fileStreamIn = new FileStream(filezip, FileMode.Open, FileAccess.Read))
            {
                using (ZipInputStream zipInStream = new ZipInputStream(fileStreamIn))
                {
                    ZipEntry entry = zipInStream.GetNextEntry();
                    do
                    {
                        //判断是否时文件夹,如果是则生成文件夹
                        if (entry.Name.LastIndexOf("/") == entry.Name.Length - 1)
                        {
                            Directory.CreateDirectory(directoryName + @"\\" + entry.Name);
                        }
                        else
                        {
                            //不是则先判断在该文件下的文件夹是否都存在,不存在则生成文件夹
                            if (entry.Name.LastIndexOf("/") > 0)
                            {

                                if (!Directory.Exists(directoryName + @"\\" + entry.Name.Substring(0, entry.Name.LastIndexOf("/"))))
                                { Directory.CreateDirectory(directoryName + @"\\" + entry.Name.Substring(0, entry.Name.LastIndexOf("/"))); }
                            }
                            //文件进行解压
                            using (FileStream fileStreamOut = new FileStream(directoryName + @"\\" + entry.Name, FileMode.Create, FileAccess.Write))
                            {
                                int size = 2048;
                                byte[] buffer = new byte[2048];
                                do
                                {
                                    //读取文件大小,并解压到对应地址
                                    size = zipInStream.Read(buffer, 0, buffer.Length);
                                    fileStreamOut.Write(buffer, 0, size);
                                } while (size > 0);
                            }

                        }
                    }
                        while ((entry = zipInStream.GetNextEntry()) != null);
                    zipInStream.Close();
                    zipInStream.Dispose();
                }
            }
            //删除zip文件
            File.Delete(filezip);
            return true;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            return false;

        }

    }
    
    //--------------------复制文件

 

标签:解压,文件,Name,文件夹,复制,Directory,entry,directoryName
From: https://www.cnblogs.com/MaoZhuaShi/p/18635427

相关文章

  • 向服务器更新文件
    //下载版本///<summary>///下载版本///</summary>///<paramname="FilePath">服务器文件地址完整</param>///<paramname="downLoadPath">下载到本地地址</param>///<returns></returns>......
  • 向服务器上传文件
    //--------------------向服务器上传文件------//浏览选择需要上传的文件privatestaticboolUnzip(stringaddress,stringfilezip){//创建对话框OpenFileDialogofd=newOpenFileDialog();ofd.Title="请选择上传的文件";......
  • Linux的文件锁-flock,控制程序重复执行
    Linux的文件锁-flock,控制程序重复执行在使用crontab管理定时脚本时,如果设定的脚本执行时间间隔较短,例如5分钟执行一次,正常情况下,脚本执行耗时1分钟,在非正常情况下(如服务器压力较大的情况下,或数据量突然增大),脚本执行时间超过5分钟,这时就会造成多个脚本同时执行,严重时甚至拖垮服务......
  • 如何为运行在 PICO 4 Ultra 设备上的项目设置外部文件读写权限?
    PICO4Ultra系列设备使用的安卓操作系统为Android14。当项目的WritePermission为Externa(SDCard)且AndroidAPILevel大于32时,Unity提供的外部文件读取方式在PICO4Ultra设备上将失效。此问题提供两种解决方法,按实际情况选取。解决方法一此方法更加快捷。......
  • 软件缺少msrdc.dll文件及错误提示问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • 软件缺少msrd3x40.dll文件及错误提示问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • 软件缺少msrecr40.dll文件及错误提示问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • 软件缺少MSREPL35.DLL文件及错误提示问题
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • (六).NET6.0通用读取配置文件功能
    1.新增Microsoft.Extensions.Configuration包在启动项目下,设置appsettings.json属性为始终复制2.新建一个文件夹Common,用于存放工具类项目。并且新建项目:Ysq.Core.AppSettings,引用package包项目,然后新建一个读取配置文件的通用类,叫AppHelper。目录结构如图3.AppHelper代码如......
  • 生成excel文件(有备注和表头的情况)
    要使用Java导出Excel文件,并且通过@ExcelProperty注解进行列的映射,可以利用EasyExcel库。EasyExcel是阿里巴巴开源的一款高性能Excel读写工具,它支持通过注解将类与Excel的列进行映射,简化了Excel操作的复杂性。前提准备添加EasyExcel依赖到pom.xml文件中:<d......