|
|
|
|
namespace SharpCompressStudy.Core
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>Ϊ<EFBFBD><CEAA>Rarѹ<72><D1B9><EFBFBD>㷨<EFBFBD><E3B7A8>˽<EFBFBD>еģ<D0B5><C4A3><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD>ļ<EFBFBD><C4BC>㷨<EFBFBD>ǹ<EFBFBD><C7B9><EFBFBD><EFBFBD>ġ<EFBFBD>
|
|
|
|
|
/// <20><><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>Rarѹ<72><D1B9><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>Rar<61>ļ<EFBFBD><C4BC><EFBFBD>
|
|
|
|
|
/// <20>ܽ<EFBFBD>ѹ<EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD>zip<69><70>tar<61><72>7z<37><7A>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class WinRarFileTest:IDisposable
|
|
|
|
|
{
|
|
|
|
|
private readonly ITestOutputHelper testOutput;
|
|
|
|
|
public WinRarFileTest(ITestOutputHelper testOutputHelper)
|
|
|
|
|
{
|
|
|
|
|
this.testOutput = testOutputHelper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// <20><>ѹRar<61>ļ<EFBFBD>
|
|
|
|
|
/// ע<>⣺<EFBFBD><E2A3BA><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>Rarѹ<72><D1B9><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Fact]
|
|
|
|
|
public void ExtractFromRar_Test()
|
|
|
|
|
{
|
|
|
|
|
var rarFilePath = AppDomain.CurrentDomain.BaseDirectory + "Resource\\ѧϰ.rar";
|
|
|
|
|
|
|
|
|
|
var extractPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resource\\", Guid.NewGuid().ToString() + "\\");
|
|
|
|
|
if (!Directory.Exists(extractPath))
|
|
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(extractPath);
|
|
|
|
|
}
|
|
|
|
|
using (var archive = RarArchive.Open(rarFilePath))
|
|
|
|
|
{
|
|
|
|
|
foreach (var entry in archive.Entries)
|
|
|
|
|
{
|
|
|
|
|
if (!entry.IsDirectory)
|
|
|
|
|
{
|
|
|
|
|
entry.WriteToDirectory(extractPath, new ExtractionOptions { ExtractFullPath = true, Overwrite = true });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
testOutput.WriteLine($"<22>ļ<EFBFBD><C4BC><EFBFBD>ѹ<EFBFBD><D1B9>Ŀ¼<C4BF><C2BC>{extractPath}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
public void CompressToZip_Test()
|
|
|
|
|
{
|
|
|
|
|
string filesPath = AppDomain.CurrentDomain.BaseDirectory + "Resource\\ѧϰ";
|
|
|
|
|
var extractPathFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resource\\", Guid.NewGuid().ToString() + "\\");
|
|
|
|
|
var extractPathFile = Path.Combine(extractPathFolder, "ѧϰ.zip");
|
|
|
|
|
if (!Directory.Exists(extractPathFolder))
|
|
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(extractPathFolder);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
using var zip = File.OpenWrite(extractPathFile);
|
|
|
|
|
using var zipWriter = WriterFactory.Open(zip, ArchiveType.Zip, CompressionType.Deflate);
|
|
|
|
|
zipWriter.WriteAll(filesPath, "*", SearchOption.AllDirectories);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Dispose()
|
|
|
|
|
{
|
|
|
|
|
GC.SuppressFinalize(this);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|