zoukankan      html  css  js  c++  java
  • 解压方法,用ZipInputStream的

    解压方法,用ZipInputStream的
    http://www.myexceptions.net/c-sharp/319376.html

    求一个解压方法,用ZipInputStream的
    下面是压缩方法,求一个对压缩后的byte[]的解压方法

    public byte[] ZipPackFiles(string filenames)
      {
      ZipOutputStream zos = null;
      MemoryStream ms = null;
      try
      {
      ms = new MemoryStream();
      zos = new ZipOutputStream(ms);
      zos.SetLevel(9);
      FileStream fs = File.OpenRead(filenames);
      byte[] buffer = new byte[fs.Length];
      fs.Read(buffer, 0, buffer.Length);
      ZipEntry entry = new ZipEntry(filenames);
      entry.DateTime = DateTime.Now;
      entry.Size = fs.Length;
      fs.Close();
      zos.PutNextEntry(entry);
      zos.Write(buffer, 0, buffer.Length);
      zos.Finish();
      zos.Close();
      return ms.ToArray();
      }
      catch (Exception)
      {
      return null;
      }
      }

    ------解决方案--------------------
    public bool UnZipFile(string zipFilePath, string unZipDir, out string err)
    {
    err = "";
    if (zipFilePath == string.Empty)
    {
    err = "压缩文件不能为空!";
    return false;
    }
    if (!File.Exists(zipFilePath))
    {
    err = "压缩文件不存在!";
    return false;
    }
    if (unZipDir == string.Empty)
    unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), Path.GetFileNameWithoutExtension(zipFilePath));
    if (!unZipDir.EndsWith("\"))
    unZipDir += "\";
    if (!Directory.Exists(unZipDir))
    Directory.CreateDirectory(unZipDir);

    try
    {
    using (ZipInputStream 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 (directoryName.Length > 0)
    {
    Directory.CreateDirectory(unZipDir + directoryName);
    }
    if (!directoryName.EndsWith("\"))
    directoryName += "\";
    if (fileName != String.Empty)
    {
    using (FileStream streamWriter = File.Create(unZipDir + 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;
    }
    }
    }
    }
    }
    }
    }
    catch (Exception ex)
    {
    err = ex.Message;
  • 相关阅读:
    11111 Generalized Matrioshkas
    Uva 442 Matrix Chain Multiplication
    Uva 10815 Andy's First Dictionary
    Uva 537 Artificial Intelligence?
    Uva 340 MasterMind Hints
    SCAU 9508 诸葛给我牌(水泥题)
    Uva 10420 List of Conquests(排序水题)
    Uva 409 Excuses, Excuses!
    10/26
    11/2
  • 原文地址:https://www.cnblogs.com/sunny3158/p/15235335.html
Copyright © 2011-2022 走看看