(C#) Sharpcompress を使用してファイル (.rar、.zip、tar.bz2、.7z、.tar.gz) を圧縮および解凍します。

シャープコンプレスのインストール方法

Nuget を使用して Sharpcompress を検索し、クリックしてインストールします。

1. .rar ファイル解凍コード (rar 圧縮はサポートされていません)

using (Stream stream = File.OpenRead(@"C:\Code\sharpcompress.rar"))
{
	var reader = ReaderFactory.Open(stream);
	while (reader.MoveToNextEntry())
	{
		if (!reader.Entry.IsDirectory)
		{
			Console.WriteLine(reader.Entry.Key);
			reader.WriteEntryToDirectory(@"C:\temp", new ExtractionOptions() { ExtractFullPath = true, Overwrite = true });
		}
	}
}

2. .zip ファイルの圧縮および解凍コード

1) .zip ファイル圧縮コード

string filesPath = @"C:\Users\Administrator\source\repos\ConsoleApp1\ConsoleApp1";
            using (var zip  = File.OpenWrite("C:\\test.zip"))
            using (var zipWriter = WriterFactory.Open(zip, ArchiveType.Zip, CompressionType.Deflate))
            {
                //foreach (var filePath in filesList)
                //{
                zipWriter.WriteAll(filesPath, "*", SearchOption.AllDirectories);
                //}
            }

2) .zip ファイルの解凍コード

var archive = ArchiveFactory.Open(@"C:\\test.zip");
            foreach (var entry in archive.Entries)
            {
                if (!entry.IsDirectory)
                {
                    Console.WriteLine(entry.Key);
                    entry.WriteToDirectory(@"C:\temp", new ExtractionOptions() { ExtractFullPath = true, Overwrite = true });
                }
            }

3. .7z ファイル解凍コード (.7z 圧縮はサポートされていません)

var archive = ArchiveFactory.Open(@"F:\Python35-32.7z");
            foreach (var entry in archive.Entries)
            {
                if (!entry.IsDirectory)
                {
                    Console.WriteLine(entry.Key);
                    entry.WriteToDirectory(@"C:\temp", new ExtractionOptions() { ExtractFullPath = true, Overwrite = true });
                }
            }

4. .tar.gz ファイル圧縮コード

string filesPath = @"C:\Users\Administrator\source\repos\ConsoleApp1\ConsoleApp1";
            using (var zip  = File.OpenWrite("C:\\test.tar.gz"))
            using (var zipWriter = WriterFactory.Open(zip, ArchiveType.Tar, CompressionType.GZip))
            {
                //foreach (var filePath in filesList)
                //{
                zipWriter.WriteAll(filesPath, "*", SearchOption.AllDirectories);
                //}
            }

5. .tar.bz2 ファイル圧縮コード

using (Stream stream = File.OpenWrite(tarbz2Path))
using (var writer = WriterFactory.Open(stream, ArchiveType.Tar, CompressionType.BZip2))
{
	writer.WriteAll(filesPath, "*", SearchOption.AllDirectories);
}

おすすめ

転載: blog.csdn.net/lwf3115841/article/details/134866243