AdbTools/Update/ZipFileUtils.cs
2025-02-14 10:51:20 +08:00

66 lines
2.0 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Update
{
public class ZipFileUtils
{
public static bool UnzipFile(string zipFilePath, string extractPath)
{
try
{
// 检查 ZIP 文件是否存在
if (!File.Exists(zipFilePath))
{
throw new FileNotFoundException($"ZIP file not found: {zipFilePath}");
}
// 检查目标文件夹是否存在,如果不存在则创建
if (!Directory.Exists(extractPath))
{
Directory.CreateDirectory(extractPath);
}
// 打开 ZIP 文件
using (ZipArchive archive = ZipFile.OpenRead(zipFilePath))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
string fullPath = Path.Combine(extractPath, entry.FullName);
// 如果是目录,则创建目录
if (string.IsNullOrEmpty(entry.Name))
{
Directory.CreateDirectory(fullPath);
}
else
{
// 如果是文件,检查是否已存在
if (File.Exists(fullPath))
{
File.Delete(fullPath); // 删除已存在的文件
}
// 解压文件
entry.ExtractToFile(fullPath);
}
}
}
return true;
}
catch (Exception ex)
{
Console.WriteLine($"Error extracting ZIP file: {ex.Message}");
throw ex;
}
}
}
}