• windows mobile 上文件压缩与解压缩(使用ICSharpCode.SharpZipLib.Zip)


    using System;

    using System.Linq;

    using System.Collections.Generic;

    using System.Text;

     

    using ICSharpCode.SharpZipLib.Zip;//ZipOutputStream

    using System.IO;//FileMode

     

     

    namespace quietwalk.ZipUnZip

    {

        public class SharpZipHelper

        {

            /// <summary>  

            /// 压缩指定文件生成ZIP文件  

            /// </summary>  

            /// <param name="topDirName">顶层文件夹名称</param>  

            /// <param name="fileNamesToZip">待压缩文件列表</param>  

            /// <param name="ZipedFileName">ZIP文件</param>  

            /// <param name="CompressionLevel">压缩比</param>  

            /// <param name="password">密码</param>  

            /// <param name="comment">压缩文件注释文字</param>  

            public static void ZipFile  

                (

                string topDirName,  //顶层文件夹名称 \Storage Card\PDADataExchange\send\xml\

                string[] fileNamesToZip,  //待压缩文件列表  version.xml

                string ZipedFileName,   //ZIP文件  \Storage Card\PDADataExchange\send\zip\version.zip

                int CompressionLevel,    //压缩比  7

                string password,    //密码   ""

                string comment   //压缩文件注释文字  ""

                )  

            {  

                ZipOutputStream s = new ZipOutputStream(System.IO.File.Open(ZipedFileName, FileMode.Create)); 

     

                if(password != null && password.Length > 0)  

                    s.Password = password;  

     

                if(comment != null && comment.Length >0)  

                    s.SetComment(comment);  

     

                s.SetLevel(CompressionLevel); // 0 - means store only to 9 - means best compression  

     

                foreach (string file in fileNamesToZip)  

                {  

                    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);  

                }  

                s.Finish();  

                s.Close();  

            }  

     

            /// <summary>  

            /// 解压缩ZIP文件到指定文件夹  

            /// </summary>  

            /// <param name="zipfileName">ZIP文件</param>  

            /// <param name="UnZipDir">解压文件夹</param>  

            /// <param name="password">压缩文件密码</param>  

            public static void UnZipFile(string zipfileName, string UnZipDir, string password)  

            {

     

                //zipfileName=@"\Storage Card\PDADataExchange\receive\zip\test.zip";

                //UnZipDir= @"\Storage Card\PDADataExchange\receive\xml\";

                //password="";

     

                ZipInputStream s = new ZipInputStream(File.OpenRead(zipfileName));  

                if (password != null && password.Length > 0)  

                    s.Password = password;  

                try 

                {  

                    ZipEntry theEntry;  

                    while ((theEntry = s.GetNextEntry()) != null)  

                    {  

                        string directoryName = Path.GetDirectoryName(UnZipDir);  

                        string pathname = Path.GetDirectoryName(theEntry.Name);  

                        string fileName = Path.GetFileName(theEntry.Name);  

     

                        //生成解压目录   

                        pathname = pathname.Replace(":", "$");//处理压缩时带有盘符的问题  

                        directoryName = directoryName + "\\" + pathname;  

                        Directory.CreateDirectory(directoryName);  

     

                        if (fileName != String.Empty)  

                        {  

                            //解压文件到指定的目录  

                            FileStream streamWriter = File.Create(directoryName + "\\" + fileName);  

     

                            int size = 2048;  

                            byte[] data = new byte[2048];  

                            while (true)  

                            {  

                                size = s.Read(data, 0, data.Length);  

                                if (size > 0)  

                                {  

                                    streamWriter.Write(data, 0, size);  

                                }  

                                else 

                                {  

                                    break;  

                                }  

                            }  

                            streamWriter.Close();  

                        }  

                    }  

                    s.Close();  

                }  

                catch (Exception eu)   

                {  

                    throw eu;  

                }  

                finally 

                {  

                    s.Close();  

                }  

     

            }  

        }  

    }

     

  • 相关阅读:
    IDEA中快速排除maven依赖
    Maven构建war项目添加版本号
    运行shell脚本报/bin/bash^M: bad interpreter错误排查方法
    Shell杀tomcat进程
    根据URL下载文件
    关闭Centos的自动更新
    CentOS下建立本地YUM源并自动更新
    为Linux服务器伪装上Windows系统假象
    ServerInfo.INI解密
    请教给终端推销域名的邮件该怎么写?
  • 原文地址:https://www.cnblogs.com/quietwalk/p/1848319.html
Copyright © 2020-2023  润新知