|
|
@ -19,6 +19,7 @@ using SharpCompress.Archives.Rar;
|
|
|
|
using SharpCompress.Archives.GZip;
|
|
|
|
using SharpCompress.Archives.GZip;
|
|
|
|
using SharpCompress.Archives.Tar;
|
|
|
|
using SharpCompress.Archives.Tar;
|
|
|
|
using SharpCompress.Archives.SevenZip;
|
|
|
|
using SharpCompress.Archives.SevenZip;
|
|
|
|
|
|
|
|
using SharpCompress.Readers;
|
|
|
|
|
|
|
|
|
|
|
|
namespace SharpCompressStudy.Core
|
|
|
|
namespace SharpCompressStudy.Core
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -62,17 +63,33 @@ namespace SharpCompressStudy.Core
|
|
|
|
|
|
|
|
|
|
|
|
private static void DecompressRarFile(string fileName, bool isDelete)
|
|
|
|
private static void DecompressRarFile(string fileName, bool isDelete)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
ArgumentNullException.ThrowIfNull(fileName);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var extName = Path.GetExtension(fileName);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var descDir = Path.Combine(Path.GetDirectoryName(fileName)!, new FileInfo(fileName).Name.Replace(extName,"") + "\\");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!Directory.Exists(descDir))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
Directory.CreateDirectory(descDir);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var extName = Path.GetExtension(fileName).Trim().ToLower();
|
|
|
|
using (Stream stream = File.OpenRead(fileName))
|
|
|
|
switch (extName)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case ".rar":
|
|
|
|
var reader = ReaderFactory.Open(stream);
|
|
|
|
break;
|
|
|
|
while (reader.MoveToNextEntry())
|
|
|
|
default:
|
|
|
|
{
|
|
|
|
break;
|
|
|
|
if (!reader.Entry.IsDirectory)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
Console.WriteLine(reader.Entry.Key);
|
|
|
|
|
|
|
|
reader.WriteEntryToDirectory(descDir, new ExtractionOptions() { ExtractFullPath = true, Overwrite = true });
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isDelete)
|
|
|
|
if (isDelete)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
File.Delete(fileName);
|
|
|
|
File.Delete(fileName);
|
|
|
|