主页 > 知识库 > 网络编程 > ASP/.NET >

在.NET 4.5中压缩的命名

来源:中国IT实验室 作者:佚名 发表于:2013-05-07 12:59  点击:
在.NET 4.5中新加入的压缩的命名空间和方法。可以抛弃ICSharpCode.SharpZipLib.dll 这个类库了。性能上不相上下。但是能够大大简化你的代码。如果开始使用。NET FrameWork4.5 做压缩不妨试试自带的压缩方法。 传统使用ICSharpCode.SharpZipLib.dll 所写的代码
在.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);
    }
    怎么样代码是不是简洁了很多呢?

    有帮助
    (0)
    0%
    没帮助
    (0)
    0%