41 lines
1.5 KiB
C#
41 lines
1.5 KiB
C#
using System;
|
|||
|
|
using System.Collections.Generic;
|
||
|
|
using System.IO.Compression;
|
||
|
|
using System.IO;
|
||
|
|
using System.Linq;
|
||
|
|
using System.Text;
|
||
|
|
using System.Threading.Tasks;
|
||
|
|
using System.Formats.Tar;
|
||
|
|
using SharpCompress.Compressors.BZip2;
|
||
|
|
using SharpCompress.Archives;
|
||
|
|
using SharpCompress.Common;
|
||
|
|
|
||
|
|
namespace Actions {
|
||
|
|
public static class Archive {
|
||
|
|
|
||
|
|
public static void UnpackTarGz(string archiveFileName, string outDirectory) {
|
||
|
|
using var fileStream = File.OpenRead(archiveFileName);
|
||
|
|
using var gzipStream = new GZipStream(fileStream, CompressionMode.Decompress);
|
||
|
|
TarFile.ExtractToDirectory(gzipStream, outDirectory, true);
|
||
|
|
}
|
||
|
|
|
||
|
|
public static void UnpackTarBz2(string archiveFileName, string outDirectory) {
|
||
|
|
using var fileStream = File.OpenRead(archiveFileName);
|
||
|
|
using var bz2Stream = new BZip2Stream(fileStream, SharpCompress.Compressors.CompressionMode.Decompress, false);
|
||
|
|
TarFile.ExtractToDirectory(bz2Stream, outDirectory, true);
|
||
|
|
}
|
||
|
|
|
||
|
|
public static void UnpackZip(string archiveFileName, string outDirectory) {
|
||
|
|
using var fileStream = File.OpenRead(archiveFileName);
|
||
|
|
|
||
|
|
using var zipArchive = SharpCompress.Archives.Zip.ZipArchive.Open(fileStream);
|
||
|
|
foreach (var entry in zipArchive.Entries.Where(entry => !entry.IsDirectory)) {
|
||
|
|
entry.WriteToDirectory(outDirectory, new ExtractionOptions() {
|
||
|
|
ExtractFullPath = true,
|
||
|
|
Overwrite = true
|
||
|
|
});
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|