知识大全 文件夹压缩到zip以及解压

Posted 路径

篇首语:最关情,折尽梅花,难寄相思。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 文件夹压缩到zip以及解压相关的知识,希望对你有一定的参考价值。

  需要用到SharpLibZip 代码如下

  Zip cs

  public class Zip

  

  /// <summary>

  /// 压缩文件夹

  /// </summary>

  /// <param name= dirPath >压缩文件夹的路径</param>

  /// <param name= fileName >生成的zip文件路径</param>

  /// <param name= level >压缩级别 是存储级别 是最大压缩</param>

  /// <param name= bufferSize >读取文件的缓冲区大小</param>

  public void CompressDirectory(string dirPath string fileName int level int bufferSize)

  

  byte[] buffer = new byte[bufferSize];

  using (ZipOutputStream s = new ZipOutputStream(File Create(fileName)))

  

  s SetLevel(level);

  CompressDirectory(dirPath dirPath s buffer);

  s Finish();

  s Close();

  

  

  /// <summary>

  /// 压缩文件夹

  /// </summary>

  /// <param name= root >压缩文件夹路径</param>

  /// <param name= path >压缩文件夹内当前要压缩的文件夹路径</param>

  /// <param name= s ></param>

  /// <param name= buffer >读取文件的缓冲区大小</param>

  private void CompressDirectory(string root string path ZipOutputStream s byte[] buffer)

  

  root = root TrimEnd( \\\\ ) + \\\\ ;

  string[] fileNames = Directory GetFiles(path);

  string[] dirNames = Directory GetDirectories(path);

  string relativePath = path Replace(root );

  if (relativePath != )

  

  relativePath = relativePath Replace( \\\\ / ) + / ;

  

  int sourceBytes;

  foreach (string file in fileNames)

  

  ZipEntry entry = new ZipEntry(relativePath + Path GetFileName(file));

  entry DateTime = DateTime Now;

  s PutNextEntry(entry);

  using (FileStream fs = File OpenRead(file))

  

  do

  

  sourceBytes = fs Read(buffer buffer Length);

  s Write(buffer sourceBytes);

   while (sourceBytes > );

  

  

  foreach (string dirName in dirNames)

  

  string relativeDirPath = dirName Replace(root );

  ZipEntry entry = new ZipEntry(relativeDirPath Replace( \\\\ / ) + / );

  s PutNextEntry(entry);

  CompressDirectory(root dirName s buffer);

  

  

  /// <summary>

  /// 解压缩zip文件

  /// </summary>

  /// <param name= zipFilePath >解压的zip文件路径</param>

  /// <param name= extractPath >解压到的文件夹路径</param>

  /// <param name= bufferSize >读取文件的缓冲区大小</param>

  public void Extract(string zipFilePath string extractPath int bufferSize)

  

  extractPath = extractPath TrimEnd( \\\\ ) + \\\\ ;

  byte[] data = new byte[bufferSize];

  int size;

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

  

  ZipEntry entry;

  while ((entry = s GetNextEntry()) != null)

  

  string directoryName = Path GetDirectoryName(entry Name);

  string fileName = Path GetFileName(entry Name);

  //先创建目录

  if (directoryName Length > )

  

  Directory CreateDirectory(extractPath + directoryName);

  

  if (fileName != String Empty)

  

  using (FileStream streamWriter = File Create(extractPath + entry Name Replace( / \\\\ )))

  

  while (true)

  

  size = s Read(data data Length);

  if (size > )

  

  streamWriter Write(data size);

  

  else

  

  break;

  

  

  

  

  

  

  

  

  网上找了很久 包括老外的site也找了 没找到现成的 自己写了一个

  使用方法

  使用方法

  Zip z = new Zip();

  z Extract( c:\\\\cc zip c:\\\\haha ); z Extract( cc zip c:\\\\haha ); z Extract( c:\\\\cc zip haha );

  //上面的解压缩没啥大问题

  z CompressDirectory( E:\\\\DotNet_Library\\\\SharpZipLib\\\\SharpZipLib_ _SourceSamples c:\\\\aa zip );

  这个代码有一点点小问题 没有异常处理 压缩过程中 有文件被编辑或者被删除 那就无法压缩了

  如果这样那也会异常

cha138/Article/program/net/201311/13330

相关参考

知识大全 asp.net 压缩解压缩zip文件

  [csharp]viewplaincopyprint?  usingSystemusingSystemIOusingSystemDiagnosticsusingMicrosoftWin  usin

知识大全 下载了个游戏有6个压缩包,解压出来变成了一个大压缩包,怎么么会这样子,我的游戏文件呢

下载了个游戏有6个压缩包,解压出来变成了一个大压缩包,怎么么会这样子,我的游戏文件呢?应该是可以删除的,要是不能确定的话可以在解压完之后弄一个桌面快捷方式之后把解压包挪到其他的文件夹里看看还好使不。压

知识大全 我是之前求不后悔那部片的

我是之前求不后悔那部片的这是个压缩文件,你下载下来后,只有.z01这一个文件吗?因为这是ZIP分段压缩的文件,用WINRAR或下载一个压缩包安装软件就应该可以打开,但需要所有的分段才可以完全解压。意思

知识大全 关于rar压缩包中exe文件解压后不显示的问题,急

关于rar压缩包中exe文件解压后不显示的问题,急!单独把exe拖到你解压的目录试试,如果没有提示覆盖的话,多半被杀毒软件杀掉了,关掉你的病毒防火墙实时监控。解压缩包后不显示解压后的文件你在该文件夹里

知识大全 为什么我的电脑解压不了压缩包?

为什么我的电脑解压不了压缩包?1,解压不成功--压缩包里有文件丢失或损坏--从新下载文件2,不会你没装解压软件吧,--下载解压缩软件如winrar为什么电脑解压不了压缩包楼主,你的这种情况绝大多数都是

知识大全 文件解压后360查不出毒

文件解压后360查不出毒1000多个文件和900多个明显有差别,360还没误报过。应该是病毒只在压缩包里,你把解压后,删掉压缩包。在用360系统急救箱,,然后单击“开始系统急救”。系统引擎初始化完成后

知识大全 如何用CZip/CUnzip类压缩/解压缩文件

如何用CZip/CUnzip类压缩/解压缩文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Zip

知识大全 java 实现压缩与解压缩ZIP

java实现压缩与解压缩ZIP  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!压缩的import&n

知识大全 利用Java实现zip压缩/解压缩(1)

利用Java实现zip压缩/解压缩(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  由于网络

知识大全 我在QQ上收到一个解压文件“我的照片”解压后我意识到这是病毒~用过360、瑞星杀不干净~~~

我在QQ上收到一个解压文件“我的照片”解压后我意识到这是病毒~用过360、瑞星杀不干净~~~  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理