微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用c#解压缩.gz文件

如何解压缩.gz文件并使用c#将文件保存在特定文件夹中?

这是我第一次遇到.gz文件.我已经在搜索如何解压缩但它对我不起作用.它没有解压缩特定文件夹中的.gz文件.我不想使用任何第三方应用程序.

任何人都可以给我一个如何解压缩它的示例代码.然后将文件保存在文件夹中.谢谢.

解决方法

以下来自 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);
                    }
                }
            }
        }
    }
}

原文地址:https://www.jb51.cc/csharp/98674.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐