亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#實(shí)現(xiàn)文件壓縮與解壓功能的示例代碼

 更新時(shí)間:2023年05月19日 08:45:54   作者:叫我少年  
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)文件壓縮與解壓功能,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下

壓縮

private void skinButton1_Click(object sender, EventArgs e)
        {
            FilesUploadFor.ZipDirectory(foldertozip.Text,zipedfilename.Text);
            filesUploadFor.DisplaylistboxMsg("壓縮完成");
        }

ZipDirectory

壓縮用的是庫(kù)函數(shù)

       /// <summary>
       /// 壓縮文件夾
       /// </summary>
       /// <param name="folderToZip">需要壓縮的文件夾</param>
       /// <param name="zipedFileName">壓縮后的Zip完整文件名</param>
        public static void ZipDirectory(string folderToZip, string zipedFileName)
        {
            ZipDirectory(folderToZip, zipedFileName, string.Empty, true, string.Empty, string.Empty, true);
        }
 
        /// <summary>
        /// 壓縮文件夾
        /// </summary>
        /// <param name="folderToZip">需要壓縮的文件夾</param>
        /// <param name="zipedFileName">壓縮后的Zip完整文件名(如D:\test.zip)</param>
        /// <param name="isRecurse">如果文件夾下有子文件夾,是否遞歸壓縮</param>
        /// <param name="password">解壓時(shí)需要提供的密碼</param>
        /// <param name="fileRegexFilter">文件過(guò)濾正則表達(dá)式</param>
        /// <param name="directoryRegexFilter">文件夾過(guò)濾正則表達(dá)式</param>
        /// <param name="isCreateEmptyDirectories">是否壓縮文件中的空文件夾</param>
 
        public static void ZipDirectory(string folderToZip, string zipedFileName, string password, bool isRecurse, string fileRegexFilter, string directoryRegexFilter, bool isCreateEmptyDirectories)
        {
            FastZip fastZip = new FastZip();
            fastZip.CreateEmptyDirectories = isCreateEmptyDirectories;
            fastZip.Password = password;
            fastZip.CreateZip(zipedFileName, folderToZip, isRecurse, fileRegexFilter, directoryRegexFilter);
        }

解壓縮

  private void skinButton2_Click(object sender, EventArgs e)
        {
            filesUploadFor.UnZip(zipedfilename.Text,"");
             filesUploadFor.DisplaylistboxMsg("解壓縮完成");
        }

UnZip

解壓用的是庫(kù)函數(shù)

        /// <summary>  
        /// 功能:解壓zip格式的文件。  
        /// </summary>  
        /// <param name="zipFilePath">壓縮文件路徑</param>  
        /// <param name="unZipDir">解壓文件存放路徑,為空時(shí)默認(rèn)與壓縮文件同一級(jí)目錄下,跟壓縮文件同名的文件夾</param>  
        /// <returns>解壓是否成功</returns>  
        public void UnZip(string zipFilePath, string unZipDir)
        {
            if (zipFilePath == string.Empty)
            {
                throw new Exception("壓縮文件不能為空!");
            }
            if (!File.Exists(zipFilePath))
            {
                throw new FileNotFoundException("壓縮文件不存在!");
            }
            //解壓文件夾為空時(shí)默認(rèn)與壓縮文件同一級(jí)目錄下,跟壓縮文件同名的文件夾  
            if (unZipDir == string.Empty)
                unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath));
            if (!unZipDir.EndsWith("/"))
                unZipDir += "/";
            if (!Directory.Exists(unZipDir))
                Directory.CreateDirectory(unZipDir);
 
            using (var s = new ZipInputStream(File.OpenRead(zipFilePath)))
            {
 
                ZipEntry theEntry;
                while ((theEntry = s.GetNextEntry()) != null)
                {
                    string directoryName = Path.GetDirectoryName(theEntry.Name);
                    string fileName = Path.GetFileName(theEntry.Name);
                    if (!string.IsNullOrEmpty(directoryName))
                    {
                        Directory.CreateDirectory(unZipDir + directoryName);
                    }
                    if (directoryName != null && !directoryName.EndsWith("/"))
                    {
                    }
                    if (fileName != String.Empty)
                    {
                        using (FileStream streamWriter = File.Create(unZipDir + theEntry.Name))
                        {
 
                            int size;
                            byte[] data = new byte[2048];
                            while (true)
                            {
                                size = s.Read(data, 0, data.Length);
                                if (size > 0)
                                {
                                    streamWriter.Write(data, 0, size);
                                }
                                else
                                {
                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }

到此這篇關(guān)于C#實(shí)現(xiàn)文件壓縮與解壓功能的示例代碼的文章就介紹到這了,更多相關(guān)C#文件壓縮與解壓縮內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#內(nèi)插字符串的簡(jiǎn)單使用

    C#內(nèi)插字符串的簡(jiǎn)單使用

    這篇文章主要為大家詳細(xì)介紹了C#內(nèi)插字符串的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • C# 使用 GDI+ 實(shí)現(xiàn)添加中心旋轉(zhuǎn)(任意角度)的文字

    C# 使用 GDI+ 實(shí)現(xiàn)添加中心旋轉(zhuǎn)(任意角度)的文字

    這篇文章主要介紹了C# 使用 GDI+ 實(shí)現(xiàn)添加中心旋轉(zhuǎn)(任意角度)的文字,需要的朋友可以參考下
    2018-04-04
  • C# 中 “$” 符號(hào)的作用以及用法詳解

    C# 中 “$” 符號(hào)的作用以及用法詳解

    這篇文章主要介紹了C# 中 “$” 符號(hào)的作用以及用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • C#中WPF ListView綁定數(shù)據(jù)的實(shí)例詳解

    C#中WPF ListView綁定數(shù)據(jù)的實(shí)例詳解

    這篇文章主要介紹了C#中WPF ListView綁定數(shù)據(jù)的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • c#圖片上傳和顯示的實(shí)現(xiàn)方法

    c#圖片上傳和顯示的實(shí)現(xiàn)方法

    這篇文章主要介紹了c#實(shí)現(xiàn)圖片上傳和顯示的實(shí)現(xiàn)方法,可實(shí)現(xiàn)圖片上傳效果預(yù)覽功能,需要的朋友可以參考下。
    2016-10-10
  • C# 使用modbus 讀取PLC 寄存器地址的方法

    C# 使用modbus 讀取PLC 寄存器地址的方法

    今天通過(guò)本文給大家介紹C# 使用modbus 讀取PLC 寄存器地址的方法,使用的組件Nmodbus,文中通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-10-10
  • 一文帶你了解C#中抽象方法與虛方法的區(qū)別

    一文帶你了解C#中抽象方法與虛方法的區(qū)別

    這篇文章主要通過(guò)簡(jiǎn)單的示例為大家詳細(xì)介紹一下C#中抽象方法與虛方法的區(qū)別,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • C#控件命名規(guī)范匯總(超詳細(xì))

    C#控件命名規(guī)范匯總(超詳細(xì))

    本篇文章是對(duì)C#控件命名規(guī)范進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • C#、.Net中把字符串(String)格式轉(zhuǎn)換為DateTime類(lèi)型的三種方法

    C#、.Net中把字符串(String)格式轉(zhuǎn)換為DateTime類(lèi)型的三種方法

    這篇文章主要介紹了C#、.Net中把字符串(String)格式轉(zhuǎn)換為DateTime類(lèi)型的三種方法,本文總結(jié)了Convert.ToDateTime(string)、Convert.ToDateTime(string, IFormatProvider)、DateTime.ParseExact()三種方法,需要的朋友可以參考下
    2015-07-07
  • C# dynamic類(lèi)型使用詳解

    C# dynamic類(lèi)型使用詳解

    C#中的dynamic類(lèi)型允許在運(yùn)行時(shí)確定對(duì)象的類(lèi)型和成員,跳過(guò)編譯時(shí)類(lèi)型檢查,適用于處理未知類(lèi)型的對(duì)象或與動(dòng)態(tài)語(yǔ)言互操作,dynamic支持動(dòng)態(tài)成員解析、添加和刪除動(dòng)態(tài)成員,但性能開(kāi)銷(xiāo)較大,類(lèi)型安全性和調(diào)試?yán)щy
    2024-12-12

最新評(píng)論