zoukankan      html  css  js  c++  java
  • C# zip压缩

    /**//*

    * Gary Zhang -- cbcye@live.com

    * www.cbcye.com

    * www.quicklearn.cn

    * cbcye.cnblogs.com

    */

    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.IO;

    using ICSharpCode.SharpZipLib.Zip;

    using System.Diagnostics;

    using ICSharpCode.SharpZipLib.Core;

    namespace TestConsole

    {

    class Program

    {

    static void Main()

    {

    //CreateZipFile(@"d:", @"d:a.zip");

    UnZipFile(@"d:a.zip");

    Console.Read();

    }

    private static void CreateZipFile(string filesPath, string zipFilePath)

    {

    if (!Directory.Exists(filesPath))

    {

    Console.WriteLine("Cannot find directory '{0}'", filesPath);

    return;

    }

    try

    {

    string[] filenames = Directory.GetFiles(filesPath);

    using (ZipOutputStream s = new ZipOutputStream(File.Create(zipFilePath)))

    {

    s.SetLevel(9); // 压缩级别 0-9

    //s.Password = "123"; //Zip压缩文件密码

    byte[] buffer = new byte[4096]; //缓冲区大小

    foreach (string file in filenames)

    {

    ZipEntry entry = new ZipEntry(Path.GetFileName(file));

    entry.DateTime = DateTime.Now;

    s.PutNextEntry(entry);

    using (FileStream fs = File.OpenRead(file))

    {

    int sourceBytes;

    do

    {

    sourceBytes = fs.Read(buffer, 0, buffer.Length);

    s.Write(buffer, 0, sourceBytes);

    } while (sourceBytes > 0);

    }

    }

    s.Finish();

    s.Close();

    }

    }

    catch (Exception ex)

    {

    Console.WriteLine("Exception during processing {0}", ex);

    }

    }

    private static void UnZipFile( string zipFilePath)

    {

    if (!File.Exists(zipFilePath))

    {

    Console.WriteLine("Cannot find file '{0}'", zipFilePath);

    return;

    }

    using (ZipInputStream s = new ZipInputStream(File.OpenRead(zipFilePath)))

    {

    ZipEntry theEntry;

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

    {

    Console.WriteLine(theEntry.Name);

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

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

    // create directory

    if (directoryName.Length > 0)

    {

    Directory.CreateDirectory(directoryName);

    }

    if (fileName != String.Empty)

    {

    using (FileStream streamWriter = File.Create(theEntry.Name))

    {

    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;

    }

    }

    }

    }

    }

    }

    }

    }

    }

  • 相关阅读:
    LOJ164 高精度除法
    CQOI2013 新Nim游戏 和 BZOJ1299 巧克力棒
    UOJ514 通用测评号 和 CF891E Lust
    CF526F Pudding Monsters 和 CF997E Good Subsegments
    UOJ513 清扫银河
    SNOI2020 水池
    NOI2015 品酒大会 和 SNOI2020 字符串
    SNOI2020 生成树
    BJOI2020 封印
    UOJ523 半前缀计数
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/5276208.html
Copyright © 2011-2022 走看看