当前位置: 移动技术网 > IT编程>开发语言>c# > c#解压文件的实例方法

c#解压文件的实例方法

2019年07月18日  | 移动技术网IT编程  | 我要评论
复制代码 代码如下:#region 解压 文件 zip 格式 rar 格式        /// &l
复制代码 代码如下:

#region 解压 文件 zip 格式 rar 格式
        /// <summary>
        ///解压文件
        /// </summary>
        /// <param name="filefromunzip">解压前的文件路径(绝对路径)</param>
        /// <param name="filetounzip">解压后的文件目录(绝对路径)</param>
        public static void unpackfile(string filefromunzip, string filetounzip)
        {
            //获取压缩类型
            string untype = filefromunzip.substring(filefromunzip.lastindexof(".") + 1, 3).tolower();
            switch (untype)
            {
                case "rar":
                    unrar(filefromunzip, filetounzip);
                    break;
                case "zip":
                    unzip(filefromunzip, filetounzip);
                    break;
            }
        }
        //解压rar格式的文件
        private static void unrar(string filefromunzip, string filetounzip)
        {
            using (process process1 = new process())// 开启一个进程 执行解压工作
            {
          string serverdir = configurationmanager.appsettings["unpackfile"].tostring();//rar工具的安装路径   必须要安装 winrar     //例于:c:\program files (x86)\winrar\rar.exe
                process1.startinfo.useshellexecute = false;
                process1.startinfo.redirectstandardinput = true;
                process1.startinfo.redirectstandardoutput = true;
                process1.startinfo.redirectstandarderror = true;
                process1.startinfo.createnowindow = true;
                process1.startinfo.filename = serverdir;
                process1.startinfo.arguments = " x -inul -y " + filefromunzip + " " + filetounzip;
                process1.start();//解压开始 
                process1.waitforexit();
                process1.close();
            }
        }
        // 解压zip 文件
        public static void unzip(string filefromunzip, string filetounzip)
        {
            zipinputstream inputstream = new zipinputstream(file.openread(filefromunzip));
            zipentry theentry;
            while ((theentry = inputstream.getnextentry()) != null)
            {
                filetounzip += "/";
                string filename = path.getfilename(theentry.name);
                string path = path.getdirectoryname(filetounzip) + "/";
                // directory.createdirectory(path);//生成解压目录
                if (filename != string.empty)
                {
                    filestream streamwriter = file.create(path + filename);//解压文件到指定的目录
                    int size = 2048;
                    byte[] data = new byte[2048];
                    while (true)
                    {
                        size = inputstream.read(data, 0, data.length);
                        if (size > 0)
                        {
                            streamwriter.write(data, 0, size);
                        }
                        else
                        {
                            break;
                        }
                    }
                    streamwriter.close();
                }
            }
            inputstream.close();
        }
        #endregion

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网