• NET 4.5 压缩


    在.NET 4.5中新加入的压缩的命名空间和方法。可以抛弃ICSharpCode.SharpZipLib.dll 这个类库了。性能上不相上下。但是能够大大简化你的代码。如果开始使用.NET FrameWork4.5 做压缩不妨试试自带的压缩方法.

    传统使用ICSharpCode.SharpZipLib.dll 所写的代码。

    static void Main(string[] args)
            {
                Stopwatch watch = new Stopwatch();
                watch.Start();
                string path = @"E:";        
                Compress(Directory.GetFiles(path), @"F:4.0.zip");
                watch.Stop();
                Console.WriteLine("消耗时间:{0}", watch.ElapsedMilliseconds);
                FileInfo f = new FileInfo(@"F:4.0.zip");
                Console.WriteLine("文件大小{0}", f.Length);
            }
    
            static void Compress(string[] filePaths, string zipFilePath)
            {
                byte[] _buffer = new byte[4096];
                if (!Directory.Exists(zipFilePath))
                    Directory.CreateDirectory(Path.GetDirectoryName(zipFilePath));
                using (ZipOutputStream zip = new ZipOutputStream(File.Create(zipFilePath)))
                {
                    foreach (var item in filePaths)
                    {
                        if (!File.Exists(item))
                        {
                            Console.WriteLine("the file {0} not exist!", item);
                        }
                        else
                        {
                            ZipEntry entry = new ZipEntry(Path.GetFileName(item));
                            entry.DateTime = DateTime.Now;
                            zip.PutNextEntry(entry);
                            using (FileStream fs = File.OpenRead(item))
                            {
                                int sourceBytes;
                                do
                                {
                                    sourceBytes = fs.Read(_buffer, 0, _buffer.Length);
                                    zip.Write(_buffer, 0, sourceBytes);
                                } while (sourceBytes > 0);
                            }
                        }
                    }
                    zip.Finish();
                    zip.Close();
                }
            }
    复制代码


    使用.NET FrameWork 4.5中自带的压缩。

    复制代码
    static void Main(string[] args)
            {
                Stopwatch watch = new Stopwatch();
                watch.Start();
                string path = @"E:";
                Compress(path, @"F:4.5.zip");
                watch.Stop();
                Console.WriteLine("消耗时间:{0}", watch.ElapsedMilliseconds);
                FileInfo f = new FileInfo(@"F:4.5.zip");
                Console.WriteLine("文件大小{0}", f.Length);
            }
            static void Compress(string filePath, string zipFilePath)
            {
                ZipFile.CreateFromDirectory(filePath, zipFilePath, CompressionLevel.Fastest, false);
            }
    复制代码
  • 相关阅读:
    C++ Sqlite3的基本使用
    DirectX11 初探XMVECOTR&XMMATRIX
    lib和dll文件的初了解
    游戏设计模式——C++单例类
    C++11智能指针的深度理解
    你的文章里为什么不放源码Github链接了
    堡垒机的核心武器:WebSSH录像实现
    Asciinema文章勘误及Web端使用介绍
    Asciinema:你的所有操作都将被录制
    Django实现WebSSH操作物理机或虚拟机
  • 原文地址:https://www.cnblogs.com/KingsLiu/p/6479156.html
Copyright © 2020-2023  润新知