首页 > 其他分享 >解压ZIP文件

解压ZIP文件

时间:2023-04-24 20:11:44浏览次数:35  
标签:解压 文件 zipEntryFromZippedFile Name ZIP zipInputStream bufferFromZip string

``C#
//# 包含壓縮包相同文件名的文件

    //# 不指定文件夹,

    public static String Decompress(string Name)
    {
        try
        {
            string path = " ";
            //读取压缩文件(zip文件),准备解压缩
            ZipInputStream zipInputStream = new ZipInputStream(File.Open(Name, FileMode.Open));
            ZipEntry zipEntryFromZippedFile;
            //解壓文件不為空(GetNextEntry() 取下一个ZIP文件条目并将该流定位在条目数据的开头,如果沒有則返回null)
            while ((zipEntryFromZippedFile = zipInputStream.GetNextEntry()) != null)
            {
                FileInfo fInfo = new FileInfo(zipEntryFromZippedFile.Name);
                string filename = Path.GetFileName(zipEntryFromZippedFile.Name);

                //判斷文件夾是否存在zipEntryFromZippedFile.Name找到父目錄
                if (!fInfo.Directory.Exists)
                {
                    //創建文件夾 根據
                    fInfo.Directory.Create();

                }
                //判斷是否是文件
                if (zipEntryFromZippedFile.IsFile)
                {
                    //創建文件
                    FileStream file = fInfo.Create();
                    //if (filename == ConfigurationManager.AppSettings["ownerName"])
                    //{
                    //    path = file.Name;
                    //}
                    byte[] bufferFromZip = new byte[zipInputStream.Length];
                    zipInputStream.Read(bufferFromZip, 0, bufferFromZip.Length);
                    file.Write(bufferFromZip, 0, bufferFromZip.Length);
                    file.Close();
                }
            }
            zipInputStream.Close();
            return path;
        }

        catch
        {
            throw;
        }

    }

    //# 解压zip文件(不包含zip的文件夾,解压到指定路径)


    public static String Decompress(string Name, string fileDir)
    {
        try
        {
            string path = " ";

            //读取压缩文件(zip文件),准备解压缩
            ZipInputStream zipInputStream = new ZipInputStream(File.Open(Name, FileMode.Open));
            ZipEntry zipEntryFromZippedFile;
            //解壓文件不為空(GetNextEntry() 取下一个ZIP文件条目并将该流定位在条目数据的开头,如果沒有則返回null)
            while ((zipEntryFromZippedFile = zipInputStream.GetNextEntry()) != null)
            {
                string filename = Path.GetFileName(zipEntryFromZippedFile.Name);
                string dir = Path.GetDirectoryName(zipEntryFromZippedFile.Name);
                //string name = ConfigurationManager.AppSettings["name"].Split('.')[0];
                string str = " ";

                //判斷是否是文件夾
                if (zipEntryFromZippedFile.IsDirectory)
                {
                    //判斷是否為解壓縮文件夾
                    //if (dir == name)
                    //{
                    //    continue;
                    //}
                    str = fileDir + @"\" + dir.Split('\\')[1];

                    if (!Directory.Exists(str))
                    {
                        Directory.CreateDirectory(str);
                    }
                }
                //判斷是否是文件
                if (zipEntryFromZippedFile.IsFile)
                {
                    //判斷是否為子文件下的文件
                    //if (dir != name && dir != "")
                    //{
                    //    str = fileDir + @"\" + dir.Split('\\')[1] + @"\" + filename;
                    //}
                    //else
                    //{
                        str = fileDir + @"\" + filename;
                   // }
                    FileStream file = File.Create(str);
                    //if (filename == ConfigurationManager.AppSettings["ownerName"])
                    //{
                    //    path = file.Name;
                    //}
                    byte[] bufferFromZip = new byte[zipInputStream.Length];
                    zipInputStream.Read(bufferFromZip, 0, bufferFromZip.Length);
                    file.Write(bufferFromZip, 0, bufferFromZip.Length);
                    file.Close();
                }
            }
            zipInputStream.Close();
            return path;
        }

        catch
        {
            throw;
        }

    }

``

标签:解压,文件,zipEntryFromZippedFile,Name,ZIP,zipInputStream,bufferFromZip,string
From: https://www.cnblogs.com/lanlan2023/p/17350723.html

相关文章

  • ASUS PRIME B550M-A (WI-FI) AMD Ryzen 3600电脑 Hackintosh 黑苹果efi引导文件
    原文来源于黑果魏叔官网,转载需注明出处。(下载请直接百度黑果魏叔)硬件型号驱动情况主板ASUSPRIMEB550M-A(WI-FI)处理器AMDRyzen3600已驱动内存16GB2933hz已驱动硬盘MidasForce1TBSSDNVMEM.2Gen3x42280FormFactor已驱动显卡AMDRX6600-XT已驱动声卡瑞昱@英特尔......
  • 9 种流行的文件、文件夹比较工具点评 (转贴)
     1、FCU推荐:★★主页: http://fcu.smibe.com/功能:目录比较,文件比较特点:文件比较以三个窗口显示上部分的左侧窗口和右侧窗口为原始比较文件,不同部分以颜色区别下部分窗口为合并对照文件,相同部分不变,对于不同部分,交替显示左右两侧的内容缺点:软件提供基本的比较合并操作,不是特别方便......
  • win10共享文件到VMWare
    一、win101.选择文件夹,右键属性,共享二、WMWare1.设置-》选项-》共享文件-》总是启用-》添加共享文件夹2.设置命令sudovmhgfs-fuse.host://mnt/hgfs-osubtype=vmhgfs-fuse,allow_other(可将命令加入开机启动中)3.切换到/mnt/hgfs目录,查看ls,看到共享目录......
  • Linux 压缩与解压
    Linux压缩与解压1.tar-z:有gzip属性的-v:显示所有过程-x:解压-c:压缩-f:指定解压的文件名,切记,这个参数是最后一个参数,后面只能接文件名实例:压缩文件(gzip)tar-zxvf[file]-C[path]解压文件(gzip)tar-zcvf[file]-C[path]列出压缩文件内容(gzip)tar-tzvftest.tar.......
  • Ubuntu Vmware虚拟机 没有共享文件夹/mnt/hgfs 解决
    问题现象在Vmware虚拟机设置共享文件夹后,在Ubuntu系统侧应该在/mnt/hgfs目录下可见。然而,有时在重启虚拟机后不存在该文件夹。解决方法在终端中执行以下代码,需要root权限。sudoapt-getinstallopen-vm-toolssudomkdir/mnt/hgfssudo/usr/bin/vmhgfs-fuse.host://mnt/h......
  • Django 静态文件 request对象方法 pycharm和Django连接MySQL Django模型层初步了解 基
    目录静态文件一、概念静态文件:不经常变化的文件,主要针对html文件所使用到的各种资源。例如:css文件、js文件、img文件、第三方框架文件ps:Django针对静态文件资源需要单独在根目录创建一个static目录统一存放,该目录下的文件类型还有很多,例如:utils目录,plugins目录,li......
  • JAVA下载图片压缩zip
    1.支持多张图片下载/***下载附件zip*/@PostMapping("downloadZip")publicvoiddownloadZip(@RequestBodyShipmentAnnexVoshipmentAnnexVo,HttpServletRequestrequest,HttpServletResponseresponse){shipmentAnnexService.downloadZip(shipmentAnnexVo,request,......
  • pg_inconsistent之三个本地文件一致修复方法
    目录问题背景操作步骤问题背景ceph集群出现pginconsistent,cephpgrepair无法修复osd日志提示三个本地文件一致,但与objectinfosize大小不一致操作步骤通过cephhealthdetail,查看有问题的pgcephhealthdetail找到错误的对象文件cephpgscrub[pg_id]r......
  • python zipfile解压文件出现中文乱码
    解压文件首先要在编写代码的开头通过import关键字来调用zipfile,再用with开头的命令来处理需要解压的文件。解决乱码情况可以通过自己创建文件夹的方式来解决,先创建一个自己的解压目录,为了区分是文件还是文件夹要获取文件大小,再把解码方式为cp437变成gbk,再对文件进行拼接,示例如下:......
  • 【colab】怎么在colab打开github上的ipynb文件
    登录:https://colab.research.google.com/github/将github上的ipynb文件路径复制到框里面即可。......