加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何压缩文件

发布时间:2020-12-15 03:57:45 所属栏目:百科 来源:网络整理
导读:我想压缩C#中的文件和目录.我在互联网上找到了一些解决方案,但它们非常复杂,我无法在我的项目中运行它们.有人可以建议我一个清晰有效的解决方案吗? 解决方法 您可以在System.IO.Compression命名空间中使用GZipStream .NET 2.0. public static void Compress
我想压缩C#中的文件和目录.我在互联网上找到了一些解决方案,但它们非常复杂,我无法在我的项目中运行它们.有人可以建议我一个清晰有效的解决方案吗?

解决方法

您可以在System.IO.Compression命名空间中使用GZipStream

.NET 2.0.

public static void CompressFile(string path)
{
    FileStream sourceFile = File.OpenRead(path);
    FileStream destinationFile = File.Create(path + ".gz");

    byte[] buffer = new byte[sourceFile.Length];
    sourceFile.Read(buffer,buffer.Length);

    using (GZipStream output = new GZipStream(destinationFile,CompressionMode.Compress))
    {
        Console.WriteLine("Compressing {0} to {1}.",sourceFile.Name,destinationFile.Name,false);

        output.Write(buffer,buffer.Length);
    }

    // Close the files.
    sourceFile.Close();
    destinationFile.Close();
}

.NET 4

public static void Compress(FileInfo fi)
    {
        // Get the stream of the source file.
        using (FileStream inFile = fi.OpenRead())
        {
            // Prevent compressing hidden and 
            // already compressed files.
            if ((File.GetAttributes(fi.FullName) 
                & FileAttributes.Hidden)
                != FileAttributes.Hidden & fi.Extension != ".gz")
            {
                // Create the compressed file.
                using (FileStream outFile = 
                            File.Create(fi.FullName + ".gz"))
                {
                    using (GZipStream Compress = 
                        new GZipStream(outFile,CompressionMode.Compress))
                    {
                        // Copy the source file into 
                        // the compression stream.
                    inFile.CopyTo(Compress);

                        Console.WriteLine("Compressed {0} from {1} to {2} bytes.",fi.Name,fi.Length.ToString(),outFile.Length.ToString());
                    }
                }
            }
        }
    }

http://msdn.microsoft.com/en-us/library/ms404280.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读