婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > asp.net C#實(shí)現(xiàn)解壓縮文件的方法

asp.net C#實(shí)現(xiàn)解壓縮文件的方法

熱門標(biāo)簽:太原400電話上門辦理 柳州電銷機(jī)器人公司 400電話如何申請取消 騰訊地圖標(biāo)注手機(jī) 電銷語音機(jī)器人型號參數(shù) 征途美甲店地圖標(biāo)注 百度地圖怎樣做地圖標(biāo)注 浦發(fā)電話機(jī)器人提醒還款 昆明語音電銷機(jī)器人價格

本文實(shí)例講述了asp.net C#實(shí)現(xiàn)解壓縮文件的方法。一共給大家介紹了三段代碼,一個是簡單的解壓縮單個zip文件,后一個可以解壓批量的大量的但需要調(diào)用ICSharpCode.SharpZipLib.dll類了,最后一個比較實(shí)例可壓縮也可以解壓縮了分享給大家供大家參考。具體如下:

解壓縮單個文件:

復(fù)制代碼 代碼如下:
using System.IO;
using System.IO.Compression;
string sourceFile=@"D:2.zip";
string destinationFile=@"D:1.txt";
        private const long BUFFER_SIZE = 20480;
            // make sure the source file is there
            if (File.Exists ( sourceFile ))
            {
            FileStream sourceStream = null;
            FileStream destinationStream = null;
            GZipStream decompressedStream = null;
            byte[] quartetBuffer = null;
            try
            {
                // Read in the compressed source stream
                sourceStream = new FileStream ( sourceFile, FileMode.Open );
                // Create a compression stream pointing to the destiantion stream
                decompressedStream = new DeflateStream ( sourceStream, CompressionMode.Decompress, true );
                // Read the footer to determine the length of the destiantion file
                quartetBuffer = new byte[4];
                int position = (int)sourceStream.Length - 4;
                sourceStream.Position = position;
                sourceStream.Read ( quartetBuffer, 0, 4 );
                sourceStream.Position = 0;
                int checkLength = BitConverter.ToInt32 ( quartetBuffer, 0 );
                byte[] buffer = new byte[checkLength + 100];
                int offset = 0;
                int total = 0;
                // Read the compressed data into the buffer
                while ( true )
                {
                    int bytesRead = decompressedStream.Read ( buffer, offset, 100 );
                    if ( bytesRead == 0 )
                        break;
                    offset += bytesRead;
                    total += bytesRead;
                }
                // Now write everything to the destination file
                destinationStream = new FileStream ( destinationFile, FileMode.Create );
                destinationStream.Write ( buffer, 0, total );
                // and flush everyhting to clean out the buffer
                destinationStream.Flush ( );
            }
            catch ( ApplicationException ex )
            {
                Console.WriteLine(ex.Message, "解壓文件時發(fā)生錯誤:");
            }
            finally
            {
                // Make sure we allways close all streams
                if ( sourceStream != null )
                    sourceStream.Close ( );
                if ( decompressedStream != null )
                    decompressedStream.Close ( );
                if ( destinationStream != null )
                    destinationStream.Close ( );
            }
}

批量解壓縮(這需要調(diào)用一個解壓縮類庫。。 ICSharpCode.SharpZipLib.dll)

復(fù)制代碼 代碼如下:
using System;
using System.IO;
using System.Collections.Generic;
using System.Text;
using ICSharpCode.SharpZipLib.Zip;
namespace ZipLib
{
    /// summary>
    /// 解壓縮類
    /// /summary>
   public static class ZIP
    {
        /// summary>
        /// 解壓ZIP文件包
        /// /summary>
        /// param name="strZipFile">ZIP文件路徑/param>
        /// param name="strDir">解壓后的文件目錄路徑/param>
        /// returns>是否解壓成功/returns>
        public static bool unzipFiles(string strZipFile, string strDir)
        {
            //判斷ZIP文件是否存在
            if (File.Exists(strZipFile))
            {
                //判斷目錄是否存在
                bool bUnzipDir = false;
                //判斷是否需要創(chuàng)建目錄
                if (!Directory.Exists(strDir))
                    bUnzipDir = (Directory.CreateDirectory(strDir) != null);
                else
                    bUnzipDir = true;
                //如果解壓目錄存在
                if (bUnzipDir)
                {
                    //獲得ZIP數(shù)據(jù)流
                    ZipInputStream zipStream = new ZipInputStream(File.OpenRead(strZipFile));
                    if (zipStream != null)
                    {
                        ZipEntry zipEntry = null;
                        while ((zipEntry = zipStream.GetNextEntry()) != null)
                        {
                            string strUnzipFile = strDir + "http://" + zipEntry.Name;
                            string strFileName = Path.GetFileName(strUnzipFile);
                            string strDirName = Path.GetDirectoryName(strUnzipFile);
                            //是否為解壓目錄
                            if (!string.IsNullOrEmpty(strDirName))
                                Directory.CreateDirectory(strDirName);
                            //是否為解壓文件
                            if (!string.IsNullOrEmpty(strFileName))
                            {
                                //解壓文件
                                FileStream unzipFileStream = new FileStream(strUnzipFile, FileMode.Create);
                                if (unzipFileStream != null)
                                {
                                    byte[] buf = new byte[2048];
                                    int size = 0;
                                    while ((size = zipStream.Read(buf, 0, 2048)) > 0)
                                        unzipFileStream.Write(buf, 0, size);
                                    //關(guān)閉Stream
                                    unzipFileStream.Flush();
                                    unzipFileStream.Close();
                                }
                            }
                        }
                        //關(guān)閉ZIP流
                        zipStream.Close();
                        //返回值
                        return true;
                    }
                }
            }
            return false;
        }
    }
}

上面兩個都是解壓縮文件,下面我們把壓縮與解壓縮放在一個實(shí)例中。
最近要做一個項目涉及到C#中壓縮與解壓縮的問題的解決方法,大家分享。
這里主要解決文件夾包含文件夾的解壓縮問題。

下載SharpZipLib.dll,在http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx中有最新免費(fèi)版本,“Assemblies for .NET 1.1, .NET 2.0, .NET CF 1.0, .NET CF 2.0: Download [297 KB] ”點(diǎn)擊Download可以下載,解壓后里邊有好多文件夾,因為不同的版本,我用的FW2.0。
或者點(diǎn)擊此處本站下載。

引用SharpZipLib.dll,在項目中點(diǎn)擊項目右鍵-->添加引用-->瀏覽,找到要添加的DLL-->確認(rèn)

改寫了文件壓縮和解壓縮的兩個類,新建兩個類名字為ZipFloClass.cs,UnZipFloClass.cs
源碼如下

復(fù)制代碼 代碼如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.IO;
using ICSharpCode.SharpZipLib.Checksums;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.GZip;
/// summary>
/// ZipFloClass 的摘要說明
/// /summary>
public class ZipFloClass
{
    public void ZipFile(string strFile, string strZip)
    {
        if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar)
            strFile += Path.DirectorySeparatorChar;
        ZipOutputStream s = new ZipOutputStream(File.Create(strZip));
        s.SetLevel(6); // 0 - store only to 9 - means best compression
        zip(strFile, s, strFile);
        s.Finish();
        s.Close();
    }

    private void zip(string strFile, ZipOutputStream s, string staticFile)
    {
        if (strFile[strFile.Length - 1] != Path.DirectorySeparatorChar) strFile += Path.DirectorySeparatorChar;
        Crc32 crc = new Crc32();
        string[] filenames = Directory.GetFileSystemEntries(strFile);
        foreach (string file in filenames)
        {
            if (Directory.Exists(file))
            {
                zip(file, s, staticFile);
            }
            else // 否則直接壓縮文件
            {
                //打開壓縮文件
                FileStream fs = File.OpenRead(file);
                byte[] buffer = new byte[fs.Length];
                fs.Read(buffer, 0, buffer.Length);
                string tempfile = file.Substring(staticFile.LastIndexOf("\") + 1);
                ZipEntry entry = new ZipEntry(tempfile);
                entry.DateTime = DateTime.Now;
                entry.Size = fs.Length;
                fs.Close();
                crc.Reset();
                crc.Update(buffer);
                entry.Crc = crc.Value;
                s.PutNextEntry(entry);
                s.Write(buffer, 0, buffer.Length);
            }
        }
    }
}

復(fù)制代碼 代碼如下:
using System;
using System.Data;
using System.Web;
using System.Text;
using System.Collections;
using System.IO;
using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary;
using ICSharpCode.SharpZipLib.BZip2;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.Zip.Compression;
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
using ICSharpCode.SharpZipLib.GZip;
using ICSharpCode.SharpZipLib.Checksums;

/// summary>
/// UnZipFloClass 的摘要說明
/// /summary>
public class UnZipFloClass
{
    public string unZipFile(string TargetFile, string fileDir)
    {
        string rootFile = " ";
        try
        {
            //讀取壓縮文件(zip文件),準(zhǔn)備解壓縮
            ZipInputStream s = new ZipInputStream(File.OpenRead(TargetFile.Trim()));
            ZipEntry theEntry;
            string path = fileDir;                  
            //解壓出來的文件保存的路徑
            string rootDir = " ";                       
            //根目錄下的第一個子文件夾的名稱
            while ((theEntry = s.GetNextEntry()) != null)
            {
                rootDir = Path.GetDirectoryName(theEntry.Name);                         
                //得到根目錄下的第一級子文件夾的名稱
                if (rootDir.IndexOf("\") >= 0)
                {
                    rootDir = rootDir.Substring(0, rootDir.IndexOf("\") + 1);
                }
                string dir = Path.GetDirectoryName(theEntry.Name);                   
                //根目錄下的第一級子文件夾的下的文件夾的名稱
                string fileName = Path.GetFileName(theEntry.Name);                   
                //根目錄下的文件名稱
                if (dir != " " )                                                       
                    //創(chuàng)建根目錄下的子文件夾,不限制級別
                {
                    if (!Directory.Exists(fileDir + "\" + dir))
                    {
                        path = fileDir + "\" + dir;                                               
                        //在指定的路徑創(chuàng)建文件夾
                        Directory.CreateDirectory(path);
                    }
                }
                else if (dir == " " fileName != "")                                            
                    //根目錄下的文件
                {
                    path = fileDir;
                    rootFile = fileName;
                }
                else if (dir != " " fileName != "")                                            
                    //根目錄下的第一級子文件夾下的文件
                {
                    if (dir.IndexOf("\") > 0)                                                           
                        //指定文件保存的路徑
                    {
                        path = fileDir + "\" + dir;
                    }
                }
                if (dir == rootDir)                                                                                 
                    //判斷是不是需要保存在根目錄下的文件
                {
                    path = fileDir + "\" + rootDir;
                }
                //以下為解壓縮zip文件的基本步驟
                //基本思路就是遍歷壓縮文件里的所有文件,創(chuàng)建一個相同的文件。
                if (fileName != String.Empty)
                {
                    FileStream streamWriter = File.Create(path + "\" + 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();
            return rootFile;
        }
        catch (Exception ex)
        {
            return "1; " + ex.Message;
        }
    }  
}


引用,新建一個頁面,添加兩個按鈕,為按鈕添加Click事件
源碼如下

復(fù)制代碼 代碼如下:
protected void Button1_Click(object sender, EventArgs e)
{
        string[] FileProperties = new string[2];
        FileProperties[0] = "D:\unzipped\";//待壓縮文件目錄
        FileProperties[1] = "D:\zip\a.zip";  //壓縮后的目標(biāo)文件
        ZipFloClass Zc = new ZipFloClass();
        Zc.ZipFile(FileProperties[0], FileProperties[1]);
}
protected void Button2_Click(object sender, EventArgs e)
{
        string[] FileProperties = new string[2];
        FileProperties[0] = "D:\zip\b.zip";//待解壓的文件
        FileProperties[1] = "D:\unzipped\";//解壓后放置的目標(biāo)目錄
        UnZipFloClass UnZc = new UnZipFloClass();
        UnZc.unZipFile(FileProperties[0], FileProperties[1]);
}

希望本文所述對大家的asp.net程序設(shè)計有所幫助。

您可能感興趣的文章:
  • C語言壓縮文件和用MD5算法校驗文件完整性的實(shí)例教程
  • 如何用C#實(shí)現(xiàn)壓縮文件
  • c# 用ICSharpCode組件壓縮文件
  • C#創(chuàng)建壓縮文件的實(shí)現(xiàn)代碼
  • Windows系統(tǒng)中C#調(diào)用WinRAR來壓縮和解壓縮文件的方法
  • C#中使用WinRAR實(shí)現(xiàn)加密壓縮及解壓縮文件
  • C#實(shí)現(xiàn)rar壓縮與解壓縮文件的方法
  • c語言壓縮文件詳細(xì)講解

標(biāo)簽:江蘇 蘭州 德陽 張家界 白山 陽泉 天門 新疆

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《asp.net C#實(shí)現(xiàn)解壓縮文件的方法》,本文關(guān)鍵詞  asp.net,實(shí)現(xiàn),解,壓縮,文件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《asp.net C#實(shí)現(xiàn)解壓縮文件的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于asp.net C#實(shí)現(xiàn)解壓縮文件的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产91精品久久久久久久网曝门 | 麻豆精品一区二区av白丝在线 | 久久久久国产精品麻豆ai换脸| 国产精品激情偷乱一区二区∴| 在线观看视频一区| 精油按摩中文字幕久久| 亚洲欧美国产77777| 国产精品久久久久三级| 在线免费观看日韩欧美| 最新国产の精品合集bt伙计| 欧美日韩中文另类| 亚洲午夜私人影院| 色综合天天综合网天天看片| 奇米精品一区二区三区四区| 精品国产乱码久久久久久图片| 欧美日精品一区视频| 亚洲一区二三区| 五月综合激情婷婷六月色窝| 欧美在线影院一区二区| www.亚洲色图.com| 91精品国产手机| 国产精品小仙女| 韩国在线一区二区| 亚洲少妇屁股交4| 久久一留热品黄| 精品欧美乱码久久久久久1区2区| 国产一区不卡在线| 中文字幕一区在线观看| 国产色产综合产在线视频| 欧美二区在线观看| 成人av在线一区二区三区| 青青草原综合久久大伊人精品 | 日韩电影一区二区三区| 亚洲福利电影网| 国产日韩欧美综合在线| 成人一级片网址| 亚洲欧美在线另类| 欧美一区二区福利在线| 一本色道久久加勒比精品| 色婷婷综合久久久久中文一区二区| 91精品国产综合久久精品app| 久久久高清一区二区三区| 亚洲一区二区三区影院| 国产精品久久久久影院| 中文字幕一区二区三区视频 | 久久天堂av综合合色蜜桃网| 性欧美疯狂xxxxbbbb| 久久久久久亚洲综合| 国产亚洲午夜高清国产拍精品| 成人午夜av在线| 国产中文字幕精品| 51精品国自产在线| 亚洲风情在线资源站| 国产精品亚洲а∨天堂免在线| 亚洲高清在线视频| 精品视频在线免费观看| 亚洲精品国产一区二区三区四区在线| 色欧美片视频在线观看| 欧美日韩亚洲不卡| 亚洲二区在线观看| 亚洲免费观看高清完整 | 国产美女久久久久| 久久久久久久综合| 欧美成人精品二区三区99精品| 日韩一级在线观看| 国产婷婷一区二区| 午夜亚洲福利老司机| 免费三级欧美电影| 欧美久久婷婷综合色| 亚洲国产岛国毛片在线| 欧美欧美午夜aⅴ在线观看| 老司机免费视频一区二区| 国产精品一二三区在线| av电影在线不卡| 丰满少妇久久久久久久| 日韩一区在线看| 视频在线在亚洲| 9191久久久久久久久久久| wwww国产精品欧美| 国产婷婷色一区二区三区在线| 奇米影视一区二区三区小说| 在线观看亚洲a| 欧美肥胖老妇做爰| 午夜激情久久久| 99久久免费视频.com| 欧美四级电影网| 国产福利一区在线| 97se亚洲国产综合在线| 99久久婷婷国产综合精品 | 天天av天天翘天天综合网色鬼国产 | 欧美一级片在线观看| 国内国产精品久久| 中文字幕精品一区二区三区精品 | jiyouzz国产精品久久| 欧美日本高清视频在线观看| 日本成人在线不卡视频| 色哟哟一区二区三区| 精品一区二区三区在线观看| 欧美日韩另类国产亚洲欧美一级| 欧美日韩一区二区三区四区| 亚洲欧洲精品天堂一级| 亚洲日本欧美天堂| 日韩欧美精品在线| 91高清视频在线| 精品一区二区精品| 国产欧美日韩三级| 成人av电影在线网| 97久久精品人人做人人爽50路| 国产精品网站在线观看| 午夜成人免费电影| 91九色最新地址| 2023国产精品自拍| 国内久久精品视频| 国产欧美一区二区在线观看| 欧美午夜影院一区| 亚洲综合丁香婷婷六月香| 狠狠色丁香九九婷婷综合五月 | 欧美色偷偷大香| 欧美mv日韩mv国产网站app| 精品一区二区三区在线观看国产 | 欧美一二三四在线| 五月天激情综合| 91在线丨porny丨国产| 亚洲精品视频一区| 欧美一级二级三级蜜桃| 亚洲国产精品一区二区久久| 99久免费精品视频在线观看| 美日韩黄色大片| 亚洲一区二区三区四区五区中文 | 91黄色小视频| 亚洲国产高清不卡| 国产网红主播福利一区二区| 99re热这里只有精品免费视频| 国产日韩av一区二区| 国产福利电影一区二区三区| 亚洲欧洲av色图| 狠狠色丁香久久婷婷综| 91麻豆精品国产自产在线| 久久夜色精品国产欧美乱极品| 99久精品国产| 亚洲自拍偷拍九九九| 色婷婷av一区二区三区之一色屋| 美女一区二区三区在线观看| 日本丰满少妇一区二区三区| 午夜国产不卡在线观看视频| 91丨porny丨在线| 成人免费看视频| 激情av综合网| 一二三区精品视频| 国产精品视频免费| 日本午夜精品视频在线观看| 亚洲精品一卡二卡| 欧美国产日韩在线观看| 日韩一区欧美二区| 亚洲国产高清在线观看视频| 亚洲一区二区影院| 久久久久久久久久久久久夜| 一个色在线综合| 精品国精品自拍自在线| 午夜婷婷国产麻豆精品| 国产不卡视频在线播放| 亚洲免费观看高清在线观看| 色欧美88888久久久久久影院| 欧美日韩在线播| 欧美久久久久久久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 精品国产区一区| av一区二区三区在线| 国产成人av自拍| 综合在线观看色| 国产亚洲欧洲一区高清在线观看| 波多野结衣中文字幕一区二区三区| 精品成人免费观看| 精品国产免费一区二区三区香蕉| 亚洲欧美日韩中文播放| 欧美日韩国产影片| 色美美综合视频| 国产一区91精品张津瑜| 666欧美在线视频| 亚洲午夜在线视频| 国产亚洲人成网站| 国模大尺度一区二区三区| 美女诱惑一区二区| 色综合久久88色综合天天6| 国产精品中文字幕日韩精品| 欧美丰满一区二区免费视频| 麻豆国产欧美日韩综合精品二区| 久久精品国产亚洲a| 免费黄网站欧美| 亚洲美女视频在线观看| 图片区小说区国产精品视频| 国产一区二区三区四| 国产精品亚洲专一区二区三区| 制服.丝袜.亚洲.另类.中文| 亚洲第一成人在线| ...xxx性欧美| 国产精品久久看| 国产黄色91视频| 亚洲理论在线观看| 欧美日韩综合在线|