功能描述:
把.zip格式的文件解压后保存到另外的目录
1、引用ICSharpCode.SharpZipLib,大家可以到网上下载。
2、完成编码,我写的操作方法如下:
/// <summary>
/// 解压文件,只能解压.zip格式的文件
/// </summary>
/// <param name="filePah">.zip格式文件的路径</param>
/// <param name="savePath">保存的路径</param>
/// <returns></returns>
public static string decompress(string filePah,string savePath)
{
//返回保存后的路径,在savePath后再加一个自动生成的文件夹,防止文件夹重名
string requrnPath=null;
savePath = HttpContext.Current.Server.MapPath(savePath) + "/" + DateTime.Now.ToFileTime();
//判断是否存在该目录
if (!Directory.Exists(savePath))
Directory.CreateDirectory(savePath);
ZipInputStream inputStream = new ZipInputStream(File.OpenRead(filePah));
while (true)
{
ZipEntry zipEntry = inputStream.GetNextEntry();
if (zipEntry == null)
break;
//文件目录信息
string directory;
if (zipEntry.Name.IndexOf("/")>=0&&zipEntry.IsDirectory)
{
int index = zipEntry.Name.LastIndexOf("/");
directory = zipEntry.Name.Substring(0, index);
if (!Directory.Exists(savePath+"/"+directory))
Directory.CreateDirectory(savePath+"/"+directory);
requrnPath = savePath + "/" + zipEntry.Name;
}
if (!zipEntry.IsDirectory && zipEntry.Crc != 00000000L)//不说标记文件
{
int i = 1024;
byte[] b = new byte[i];
if (!Directory.Exists(savePath))
{
Directory.CreateDirectory(savePath);
}
FileStream fileStream = File.Create(savePath + "/" + zipEntry.Name);
while (true)
{
i = inputStream.Read(b, 0, b.Length);
if (i > 0)
{
fileStream.Write(b, 0, i);
}
else
break;
}
fileStream.Close();
}
}
inputStream.Close();
return requrnPath;
}