You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
2.3 KiB
C#

1 year ago
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);
}
}
}