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
壓縮用的是庫函數(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">文件過濾正則表達(dá)式</param> /// <param name="directoryRegexFilter">文件夾過濾正則表達(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
解壓用的是庫函數(shù)
/// <summary> /// 功能:解壓zip格式的文件。 /// </summary> /// <param name="zipFilePath">壓縮文件路徑</param> /// <param name="unZipDir">解壓文件存放路徑,為空時(shí)默認(rèn)與壓縮文件同一級目錄下,跟壓縮文件同名的文件夾</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)與壓縮文件同一級目錄下,跟壓縮文件同名的文件夾 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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# 使用 GDI+ 實(shí)現(xiàn)添加中心旋轉(zhuǎn)(任意角度)的文字
這篇文章主要介紹了C# 使用 GDI+ 實(shí)現(xiàn)添加中心旋轉(zhuǎn)(任意角度)的文字,需要的朋友可以參考下2018-04-04C#中WPF ListView綁定數(shù)據(jù)的實(shí)例詳解
這篇文章主要介紹了C#中WPF ListView綁定數(shù)據(jù)的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10C#、.Net中把字符串(String)格式轉(zhuǎn)換為DateTime類型的三種方法
這篇文章主要介紹了C#、.Net中把字符串(String)格式轉(zhuǎn)換為DateTime類型的三種方法,本文總結(jié)了Convert.ToDateTime(string)、Convert.ToDateTime(string, IFormatProvider)、DateTime.ParseExact()三種方法,需要的朋友可以參考下2015-07-07