美文网首页
C# 压缩与解压

C# 压缩与解压

作者: 若能遇见 | 来源:发表于2020-12-15 21:27 被阅读0次

  在System.IO.Compression命名空间下框架封装了一些对流进行压缩和解压缩的类。

使用DeflateStream类压缩文件

    Console.WriteLine("请输入待压缩文件的完整路径:");
    string inputFilePath = Console.ReadLine();
    Console.WriteLine("请输入压缩后文件的输出路径:");
    string outputFilePath = Console.ReadLine();

    using (FileStream instream = new FileStream(inputFilePath, FileMode.Open))
    using (FileStream outstream = new FileStream(outputFilePath, FileMode.Create))
    using (DeflateStream defstream = new DeflateStream(outstream, CompressionLevel.Optimal))
    {
        instream.CopyTo(defstream);
    }

    FileInfo f1 = new FileInfo(inputFilePath), f2 = new FileInfo(outputFilePath);
    Console.WriteLine($"压缩前文件大小:{f1.Length}");
    Console.WriteLine($"压缩后文件大小:{f2.Length}");
    Console.Read();

创建Zip压缩文档

  ZipArchive类支持对zip压缩文档的基本管理,压缩文档中的每个文件由ZipArchiveEntry类进行维护。Delete方法可将文件从zip文档中删除;Open方法将得到一个流实例,可以对压缩文档中的文件实体进行读写。

    string zipFile = "demo.zip";

    // 生成 zip 文档
    if (File.Exists(zipFile))
        File.Delete(zipFile);

    using (FileStream outfs = File.Create(zipFile))
    {
        using (ZipArchive zip = new ZipArchive(outfs, ZipArchiveMode.Create))
        {
            // 第一个文件
            ZipArchiveEntry et1 = zip.CreateEntry("docs/doc1.txt");
            using (Stream stream = et1.Open())
            {
                using (StreamWriter writer = new StreamWriter(stream))
                {
                    writer.Write("示例文档 A");
                }
            }
            // 第二个文件
            ZipArchiveEntry et2 = zip.CreateEntry("docs/doc2.txt");
            using (Stream stream = et2.Open())
            {
                using (StreamWriter writer = new StreamWriter(stream))
                {
                    writer.Write("示例文档 B");
                }
            }
            // 第三个文件
            ZipArchiveEntry et3 = zip.CreateEntry("docs/doc3.txt");
            using (Stream stream = et3.Open())
            {
                using (StreamWriter writer = new StreamWriter(stream))
                {
                    writer.Write("示例文档 C");
                }
            }
        }
    }

    // 将三个文件解压出来
    using(FileStream instream = File.OpenRead(zipFile))
    {
        using(ZipArchive zip = new ZipArchive(instream))
        {
            foreach(ZipArchiveEntry et in zip.Entries)
            {
                using(Stream stream = et.Open())
                {
                    using(FileStream fsout = File.Create(et.Name))
                    {
                        stream.CopyTo(fsout);
                    }
                }
            }
        }
    }

使用GZipStream类压缩文件

  GZIP(全称GNUzip)扩展名为.gz,是一种数据压缩格式,以GZipStream类来封装GZip算法相关功能。

    Console.WriteLine("请输入待压缩文件的路径:");
    string inFilePath = Console.ReadLine();
    string outFileName = "demo.gz";

    if (File.Exists(outFileName))
        File.Delete(outFileName);

    using (FileStream fsIn = File.OpenRead(inFilePath))
    using (FileStream fsOut = File.Create(outFileName))
    {
        using (GZipStream gz = new GZipStream(fsOut, CompressionMode.Compress))
        {
            fsIn.CopyTo(gz);
        }
    }

    FileInfo info1 = new FileInfo(inFilePath);
    FileInfo info2 = new FileInfo(outFileName);
    Console.WriteLine($"压缩前,文件大小:{info1.Length}");
    Console.WriteLine($"压缩后,文件大小:{info2.Length}");

    Console.Read();

相关文章

  • Linux压缩命令

    .zip格式压缩与解压缩 .gz格式压缩与解压缩 .bz2格式压缩与解压缩 打包命令tar

  • Linux(ubuntu)安装软件

    在Linux安装软件前,首先要了解压缩与解压缩。 压缩与解压缩 zip / unzip可以对多个文件和目录进行压缩...

  • c#文件压缩解压

    压缩 ZipDirectory 解压缩 UnZip

  • CentOS7.2腾讯云安装部署Nginx+uwsgi+Djan

    Django==2.0 Python==3.6.9 使用tar命令解压缩,tar是Linux系统下的压缩与解压缩...

  • 4、Linux压缩命令

    压缩与解压缩命令 gzip 使用gzip程序压缩/解压缩文件,文件扩展名以 .gz 结尾 zcat 查看以gzip...

  • 压缩与解压

    .sh 解压.sh文件 or在该文件夹下 zip 压缩成zip 解压zip tar 压缩成tar 解压tar ta...

  • 压缩与解压

    文件解压 文件类型命令功能.tar.gztar -zxvf xxx.tar.gz -C

    解压文件到-C指...

  • 图像处理 无损压缩-哈夫曼编码(可变字长符号编码)

    有损压缩 概念 按照压缩方法是否丢失信息分为有损压缩和无损压缩,有损压缩解压缩后的数据与原始数据完全相同。 解压缩...

  • Linux基础命令四

    一、打包解包压缩解压先关命令 zip打包解包压缩解压 tar打包解包压缩解压 -z 压缩,解压 -c 创建文件 -...

  • 压缩与解压缩

    zip 与windows环境下的压缩格式一致,可以在两个操作系统通用。1.压缩文件 zip <压缩文件名> <压缩...

网友评论

      本文标题:C# 压缩与解压

      本文链接:https://www.haomeiwen.com/subject/clmogktx.html