using ICSharpCode.SharpZipLib.Zip;
static void Main(string[] args)
{
while (true)
{
Console.WriteLine("请输入待解压文件夹所在地址:");
string fileName = Console.ReadLine();
if (fileName == "")
{
continue;
}
//获取给定路径下-所有匹配文件
DirectoryInfo dic = new DirectoryInfo(@fileName.TrimEnd('\\'));
//FileInfo[] filesDic = new string[] { "*.zip" }.SelectMany(i => dic.GetFiles(i, SearchOption.TopDirectoryOnly)).Distinct().ToArray();
FileInfo[] filesDic =dic.GetFiles("*.zip", SearchOption.TopDirectoryOnly).Distinct().ToArray();
string error = "";
//循环解压文件
foreach (FileInfo item in filesDic)
{
if (UnZip(item, fileName, ref error))
{
Console.WriteLine("【" + item.Name + "】文件成功");
}
else
{
Console.WriteLine("【" + item.Name + "】文件解压失败,错误信息:" + error);
}
}
Console.ReadLine();
}
}
#region 解压Zip文件
public static bool UnZip(FileInfo zipFile, string url, ref string error)
{
ZipEntry zipEntry;
string fileUrl = url + "\\" + zipFile.Name.Replace(zipFile.Extension, "");
try
{
using (ZipInputStream zipInput = new ZipInputStream(File.OpenRead(zipFile.FullName)))
{
if (!Directory.Exists(fileUrl))
{
Directory.CreateDirectory(fileUrl);
}
while ((zipEntry = zipInput.GetNextEntry()) != null)
{
if (!string.IsNullOrWhiteSpace(zipEntry.Name))
{
//文件是否为目录路径
if (zipEntry.IsDirectory)
{
if (!Directory.Exists(fileUrl + "\\" + zipEntry.Name))
{
Directory.CreateDirectory(fileUrl + "\\" + zipEntry.Name);
}
}
else
{
if (!File.Exists(fileUrl + "\\" + zipEntry.Name))
{
FileStream stream = File.Create(fileUrl + "\\" + zipEntry.Name);
byte[] data = new byte[zipEntry.Size];
int size =Convert.ToInt32(zipEntry.Size);
size = zipInput.Read(data, 0, data.Length);
if (size == 0)
break;
stream.Write(data, 0, size);
stream.Close();
}
}
}
}
zipInput.Close();
}
return true;
}
catch (Exception ex)
{
error = ex.Message;
return false;
}
}
#endregion
ICSharpCode.SharpZipLib 解压Zip文件
最新推荐文章于 2023-12-26 11:51:24 发布