IT技术

.Net文件在线压缩的实现
作者:
来源: 本站
发布日期: 2018/3/16 9:53:39
点击量: 3635次
【 字体:
背景颜色:

  .Net文件在线压缩的实现

1.需下载和引用文件“ICSharpCode.SharpZipLib.dll“。下载地址“https://download.csdn.net/download/njxiaogui/8251031”。


2.压缩代码的方法

     /// <summary>  
    /// 压缩单个文件  
    /// </summary>  
    /// <param name="fileToZip">要压缩的文件</param>  
    /// <param name="zipedFile">压缩后的文件全名</param>  
    /// <param name="compressionLevel">压缩程度,范围0-9,数值越大,压缩程序越高</param>  
    /// <param name="blockSize">分块大小</param>  
    public void ZipFile(string fileToZip, string zipedFile, int compressionLevel, int blockSize)
    {
        if (!System.IO.File.Exists(fileToZip))//如果文件没有找到,则报错  
        {
            throw new FileNotFoundException("The specified file " + fileToZip + " could not be found. Zipping aborderd");
        }


        FileStream streamToZip = new FileStream(fileToZip, FileMode.Open, FileAccess.Read);
        FileStream zipFile = File.Create(zipedFile);
        ZipOutputStream zipStream = new ZipOutputStream(zipFile);
        ZipEntry zipEntry = new ZipEntry(fileToZip);
        zipStream.PutNextEntry(zipEntry);
        zipStream.SetLevel(compressionLevel);
        byte[] buffer = new byte[blockSize];
        int size = streamToZip.Read(buffer, 0, buffer.Length);
        zipStream.Write(buffer, 0, size);


        try
        {
            while (size < streamToZip.Length)
            {
                int sizeRead = streamToZip.Read(buffer, 0, buffer.Length);
                zipStream.Write(buffer, 0, sizeRead);
                size += sizeRead;
            }
        }
        catch (Exception ex)
        {
            GC.Collect();
            throw ex;
        }


        zipStream.Finish();
        zipStream.Close();
        streamToZip.Close();
        GC.Collect();
    }

3.调用方法。

                ZipUtility zip = new ZipUtility();
                zip.ZipFile(vidurl, vidrar, 5, 10);
            // 该方法中 vidurl 为 要压缩的绝对路径

           // vidrar 为压缩文件所存放的路劲


 4.总结,该方法可以实现文件的在线压缩,方便用户下载不能直接下载的文件,比如视频,音频文件等。   




扫一扫在手机打开当前页

Contact

联系我们

告诉我们您想要的吧!我们为当地客户提供专业、及时的服务
地址:云南省昆明市白云路368号
电话:400-871-8716 (工作时间:09:00-18:00(周一至周五))
何总:23592693
李总:53815112