web-dev-qa-db-ja.com

c#を使用して.gzファイルを解凍します

C#を使用して.gzファイルを解凍して特定のフォルダーにファイルを保存するにはどうすればよいですか?

.gzファイルに遭遇するのはこれが初めてです。解凍する方法を探しましたが、うまくいきませんでした。特定のフォルダーにある.gzファイルを解凍しませんでした。サードパーティのアプリケーションは使いたくありません。

誰かが私にそれを解凍する方法のサンプルコードをくれましたか?次に、ファイルをフォルダに保存します。ありがとう。

12
Kuriyama Mirai

次の例 [〜#〜] msdn [〜#〜] は、GZipStreamクラスを使用してファイルのディレクトリを圧縮および解凍する方法を示しています。

namespace Zip
{
    public class Program
    {
        public static void Main()
        {
            string directoryPath = @"c:\users\public\reports";

            DirectoryInfo directorySelected = new DirectoryInfo(directoryPath);

            foreach (FileInfo fileToCompress in directorySelected.GetFiles())
            {
                Compress(fileToCompress);
            }

            foreach (FileInfo fileToDecompress in directorySelected.GetFiles("*.gz"))
            {
                Decompress(fileToDecompress);
            }
        }

        public static void Compress(FileInfo fileToCompress)
        {
            using (FileStream originalFileStream = fileToCompress.OpenRead())
            {
                if ((File.GetAttributes(fileToCompress.FullName) & FileAttributes.Hidden) != FileAttributes.Hidden & fileToCompress.Extension != ".gz")
                {
                    using (FileStream compressedFileStream = File.Create(fileToCompress.FullName + ".gz"))
                    {
                        using (GZipStream compressionStream = new GZipStream(compressedFileStream, CompressionMode.Compress))
                        {
                            originalFileStream.CopyTo(compressionStream);
                            Console.WriteLine("Compressed {0} from {1} to {2} bytes.",
                                fileToCompress.Name, fileToCompress.Length.ToString(), compressedFileStream.Length.ToString());
                        }
                    }
                }
            }
        }

        public static void Decompress(FileInfo fileToDecompress)
        {
            using (FileStream originalFileStream = fileToDecompress.OpenRead())
            {
                string currentFileName = fileToDecompress.FullName;
                string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length);

                using (FileStream decompressedFileStream = File.Create(newFileName))
                {
                    using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
                    {
                        decompressionStream.CopyTo(decompressedFileStream);
                        Console.WriteLine("Decompressed: {0}", fileToDecompress.Name);
                    }
                }
            }
        }
    }
}
25
Moez Rebai

.Netには GZipStream

APIにリストされている例...

public static void Decompress(FileInfo fileToDecompress)
    {
        using (FileStream originalFileStream = fileToDecompress.OpenRead())
        {
            string currentFileName = fileToDecompress.FullName;
            string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length);

            using (FileStream decompressedFileStream = File.Create(newFileName))
            {
                using (GZipStream decompressionStream = new GZipStream(originalFileStream, CompressionMode.Decompress))
                {
                    decompressionStream.CopyTo(decompressedFileStream);
                    Console.WriteLine("Decompressed: {0}", fileToDecompress.Name);
                }
            }
        }
    }
7
Matthew Trout

次のリンクは、C#のファイルへのZipと解凍の2つの例を示しています。このサンプルを使用できます。

サンプル(7-Zipを使用):

var tmp = new SevenZipCompressor();
tmp.ScanOnlyWritable = true;
tmp.CompressFilesEncrypted(outputFilePath, password, filePaths);

サンプル(ZipArchiveを使用):

ZipArchive Zip = ZipFile.Open(filePath, ZipArchiveMode.Create);
Zip.CreateEntryFromFile(file, Path.GetFileName(file), CompressionLevel.Optimal);
Zip.Dispose();

詳細については:

http://csharpexamples.com/Zip-and-unzip-files-programmatically-in-c/

0
turgay