C# 解压缩文件?解决办法
C# 解压缩文件?
C# 如何解压缩文件?大家用的什么方法?
在网上看到用SharpZipLib,但是下载的例子都是压缩可以,解压不可以的。
我要压缩的是文件夹,文件夹下有很多子文件夹,和文件。大概20M
目前用的这种方法,但是效率太慢了,6.7M的zip文件解压的制定目录差不多要1分钟,有点受不了。
这个方法是:
这个方法运行可以,就是太慢1分多种,请问大家有其他办法没?
希望能运行的,最好是源码,不要贴网上的,网上的都参考的差不多了。
谢谢了
------解决方案--------------------
直接调用WINR
------解决方案--------------------
解压本来就是要看你文件的大小的啊。。
------解决方案--------------------
你去下载一个组件 ICSharpCode.SharpZipLib.dll
下面是我写的包装方法。
你看一下,满不满 足你的要求
C# 如何解压缩文件?大家用的什么方法?
在网上看到用SharpZipLib,但是下载的例子都是压缩可以,解压不可以的。
我要压缩的是文件夹,文件夹下有很多子文件夹,和文件。大概20M
目前用的这种方法,但是效率太慢了,6.7M的zip文件解压的制定目录差不多要1分钟,有点受不了。
这个方法是:
- C# code
//添加引用Shell32.dll 在系统文件夹里 public bool BuildFrame(string srcFile, string destFolder) { try { Shell32.ShellClass sc = new Shell32.ShellClass(); Shell32.Folder SrcFolder = sc.NameSpace(srcFile); Shell32.Folder DestFolder = sc.NameSpace(destFolder); Shell32.FolderItems items = SrcFolder.Items(); DestFolder.CopyHere(items, 20); return true; } catch { return false; } }
这个方法运行可以,就是太慢1分多种,请问大家有其他办法没?
希望能运行的,最好是源码,不要贴网上的,网上的都参考的差不多了。
谢谢了
------解决方案--------------------
直接调用WINR
------解决方案--------------------
解压本来就是要看你文件的大小的啊。。
------解决方案--------------------
你去下载一个组件 ICSharpCode.SharpZipLib.dll
下面是我写的包装方法。
你看一下,满不满 足你的要求
- C# code
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using ICSharpCode.SharpZipLib.Zip;
namespace Microsoft.ITF.Tools.GZIP
{
public class GZip
{
/// <summary>
/// 打包文件
/// </summary>
/// <param name="filenames">要打包的文件列表 </param>
/// <param name="GzipFileName">目标文件名 </param>
/// <param name="CompressionLevel">压缩品质级别(0~9) </param>
/// <param name="SleepTimer">休眠时间(单位毫秒) </param>
public static void DoZip( List <FileInfo> filenames, string GzipFileName, int CompressionLevel, int SleepTimer )
{
ZipOutputStream s = new ZipOutputStream( File.Create( GzipFileName ) );
try
{
s.SetLevel( CompressionLevel ); //0 - store only to 9 - means best compression
foreach ( FileInfo file in filenames )
{
FileStream fs = null;
try
{
fs = file.Open( FileMode.Open, FileAccess.ReadWrite );
}
catch
{ continue; }
byte[] buffer = new byte[fs.Length];
fs.Read( buffer, 0, buffer.Length );
ZipEntry entry = new ZipEntry( Path.GetFileName( file.Name ) );
entry.DateTime = ( file.CreationTime > file.LastWriteTime ? file.LastWriteTime : file.CreationTime );
s.PutNextEntry( entry );
s.Write( buffer, 0, buffer.Length );
fs.Close();
file.Delete();
if ( SleepTimer > 10 )
Thread.Sleep( SleepTimer );
}
}
finally
{
s.Finish();
s.Close();
}
}
/// <summary>
/// 打包文件
/// </summary>
/// <param name="filenames">要打包的文件列表 </param>
/// <param name="GzipFileName">目标文件名 </param>
/// <param name="CompressionLevel">压缩品质级别(0~9) </param>
/// <param name="SleepTimer">休眠时间(单位毫秒) </param>
public static void DoZip( List <string> filenames, string GzipFileName, int CompressionLevel, int SleepTimer )
{
ZipOutputStream s = new ZipOutputStream( File.Create( GzipFileName ) );