1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- using SharpCompress.Archives;
- using SharpCompress.Archives.Rar;
- using SharpCompress.Common;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.IO.Compression;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace wispro.sp.winClient
- {
- public class ExtractFileUtil
- {
-
- public static void ExtractZip(string zipFilePath, string extractPath)
- {
- Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
- // 确保提取目录存在
- Directory.CreateDirectory(extractPath);
- // 使用 ZipArchive 解压缩 ZIP 文件
- using (FileStream zipToOpen = new FileStream(zipFilePath, FileMode.Open))
- {
- using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Read, true, Encoding.GetEncoding("GB2312")))
- {
- foreach (ZipArchiveEntry entry in archive.Entries)
- {
- if (entry.FullName.EndsWith("/", StringComparison.Ordinal) || entry.FullName.EndsWith("\\", StringComparison.Ordinal))
- {
- Console.WriteLine($"目录: {entry.FullName}");
- }
- else
- {
- string entryPath = Path.Combine(extractPath, entry.FullName);
- Directory.CreateDirectory(new System.IO.FileInfo(entryPath).Directory.FullName);
- entry.ExtractToFile(entryPath, true);
- }
- }
- }
- }
- }
- public static void ExtractRarFile(string rarPath, string outputPath)
- {
- try
- {
- // 确保输出目录存在
- Directory.CreateDirectory(outputPath);
- // 打开RAR文件
- using (var archive = RarArchive.Open(rarPath))
- {
- // 遍历所有文件
- foreach (var entry in archive.Entries)
- {
- if (!entry.IsDirectory)
- {
- // 构建完整输出路径
- string outputFilePath = Path.Combine(outputPath, entry.Key);
- // 确保输出文件的目录存在
- Directory.CreateDirectory(Path.GetDirectoryName(outputFilePath));
- // 解压文件
- entry.WriteToFile(outputFilePath, new ExtractionOptions
- {
- ExtractFullPath = true,
- Overwrite = true
- });
- }
- }
- }
- }
- catch (Exception ex)
- {
- throw new Exception($"解压RAR文件时出错: {ex.Message}");
- }
- }
- }
- }
|