小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

文件壓縮類

 悟靜 2011-05-13
//下面的壓縮文文件代碼我是在網(wǎng)上擇錄下來(lái)

調(diào)用此類之前需要在http://www./OpenSource/SharpZipLib/下載SharpZipLib 然后將ICSharpCode.SharpZipLib.dll 引用一下

using System;
using System.Collections.Generic;
using System.Text;
using ICSharpCode.SharpZipLib.Checksums;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.GZip;
using System.IO;

namespace WindowsFormsApplication1
{
    public class ZipClass
    {
        public string cutStr = "";

        //Get all DirectoryInfo
        private void direct(DirectoryInfo di, ref ZipOutputStream s, Crc32 crc)
        {
            //DirectoryInfo di = new DirectoryInfo(filenames);
            DirectoryInfo[] dirs = di.GetDirectories("*");
            //遍歷目錄下面的所有的子目錄
            foreach (DirectoryInfo dirNext in dirs)
            {
                //將該目錄下的所有文件添加到 ZipOutputStream s 壓縮流里面
                FileInfo[] a = dirNext.GetFiles();
                this.writeStream(ref s, a, crc);

                //遞歸調(diào)用直到把所有的目錄遍歷完成
                direct(dirNext, ref s, crc);
            }
        }

        private void writeStream(ref ZipOutputStream s, FileInfo[] a, Crc32 crc)
        {
            foreach (FileInfo fi in a)
            {
                //string fifn = fi.FullName;
                FileStream fs = fi.OpenRead();

                byte[] buffer = new byte[fs.Length];
                fs.Read(buffer, 0, buffer.Length);


                //ZipEntry entry = new ZipEntry(file);   Path.GetFileName(file)
                string file = fi.FullName;
                file = file.Replace(cutStr, "");

                ZipEntry entry = new ZipEntry(file);

                entry.DateTime = DateTime.Now;

                // set Size and the crc, because the information
                // about the size and crc should be stored in the header
                // if it is not set it is automatically written in the footer.
                // (in this case size == crc == -1 in the header)
                // Some ZIP programs have problems with zip files that don't store
                // the size and crc in the header.
                entry.Size = fs.Length;
                fs.Close();

                crc.Reset();
                crc.Update(buffer);

                entry.Crc = crc.Value;

                s.PutNextEntry(entry);

                s.Write(buffer, 0, buffer.Length);
            }
        }

        /// <summary>
        /// 主調(diào)函數(shù)
        /// </summary>
        /// <param name="args">args[0]為你要壓縮的目錄所在的路徑
        /// 例如:D:\\temp\\  (注意temp 后面加 \\ 但是你寫程序的時(shí)候怎么修改都可以)
        /// args[1]為壓縮后的文件名及其路徑
        /// 例如:D:\\temp.zip
        /// </param>
        public void ZipFileMain(string[] args)
        {
            //string filenames = Directory.GetFiles(args[0]);

            Crc32 crc = new Crc32();
            ZipOutputStream s = new ZipOutputStream(File.Create(args[1]));

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

            DirectoryInfo di = new DirectoryInfo(args[0]);

            FileInfo[] a = di.GetFiles();

            cutStr = args[0].Trim();
            //壓縮這個(gè)目錄下的所有文件
            writeStream(ref s, a, crc);
            //壓縮這個(gè)目錄下子目錄及其文件
            direct(di, ref s, crc);

            s.Finish();
            s.Close();
        }
    }

}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多