[DNN学习所得]让IE也能实现解压缩功能(提供演示源码下载)

原创 2005年05月28日 16:48:00

  在看DNN时发现了一个很酷的功能:能通过IE浏览器实现对Zip文件的压缩和生成Zip文件文件压缩包的功能。在仔细看过程序以后发现它是调用的SharpZipLib.dll类库中的内容实现的压缩与解压功能。上网查了一下SharpZipLib,发现它居然是开源的,在http://www.icsharpcode.net网站上有下。在网站里关于SharpZipLib的源文件和调用演示包括帮助文档都有下,不过当然全是E文的。(真不知在中国有哪家公司在做.net的开源,真的十分想看国产的优秀开源项目)

在SharpZipLib中实现解压的方法(演示代码):

using System;
using System.Text;
using System.Collections;
using System.IO;
using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary;
using System.Data;

using ICSharpCode.SharpZipLib.BZip2;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.Zip.Compression;
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
using ICSharpCode.SharpZipLib.GZip;


class MainClass
{            
    
// 在控制命令行下输入要解压的Zip文件名
    public static void Main(string[] args)
    
{
        
// 创建读取Zip文件对象
        ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]));
        
// Zip文件中的每一个文件
        ZipEntry theEntry;
        
// 循环读取Zip文件中的每一个文件
        while ((theEntry = s.GetNextEntry()) != null{
            
            Console.WriteLine(theEntry.Name);
            
            
string directoryName = Path.GetDirectoryName(theEntry.Name);
            
string fileName      = Path.GetFileName(theEntry.Name);
            
            
// create directory
            Directory.CreateDirectory(directoryName);
            
            
if (fileName != String.Empty) {
                
// 解压文件
                FileStream streamWriter = File.Create(theEntry.Name);
                
                
int size = 2048;
                
byte[] data = new byte[2048];
                
while (true{
                    
// 写入数据
                    size = s.Read(data, 0, data.Length);
                    
if (size > 0{
                        streamWriter.Write(data, 
0, size);
                    }
 else {
                        
break;
                    }

                }

                
                streamWriter.Close();
            }

        }

        s.Close();
    }

}

在SharpZipLib中实现压缩的方法:
using System;
using System.IO;

using ICSharpCode.SharpZipLib.Checksums;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.GZip;

class MainClass
{
    
// 输入要压缩的文件夹和要创建的Zip文件文件名称
    public static void Main(string[] args)
    
{
        
string[] filenames = Directory.GetFiles(args[0]);
        
        Crc32 crc 
= new Crc32();
        
// 创建输出Zip文件对象
        ZipOutputStream s = new ZipOutputStream(File.Create(args[1]));
        
// 设置压缩等级
        s.SetLevel(6); // 0 - store only to 9 - means best compression
        
// 循环读取要压缩的文件,写入压缩包        
        foreach (string file in filenames) {
            FileStream fs 
= File.OpenRead(file);
            
            
byte[] buffer = new byte[fs.Length];
            fs.Read(buffer, 
0, buffer.Length);
            ZipEntry entry 
= new ZipEntry(file);
            
            entry.DateTime 
= DateTime.Now;
            
            entry.Size 
= fs.Length;
            fs.Close();
            
            crc.Reset();
            crc.Update(buffer);
            
            entry.Crc  
= crc.Value;
            
            s.PutNextEntry(entry);
            
            s.Write(buffer, 
0, buffer.Length);
            
        }

        
        s.Finish();
        s.Close();
    }

}

  类中应该还有其他功能,还没有来得及看。具体SharpZipLib中是如何实行的也还没有来得及看,先试一试最简单功能,大家有兴趣可以下载看看。默认提供的演示程序是控制台下运行的(好像还有其他环境中运行的,不过我没有试),我照着做了一个WEB应用程序的,希望能对大家有用。

下载WEB下的演示程序>>
更多相关内容>>

Java实现文件解压缩源码

package com.zyuc.zipfile; import java.io.File; import java.io.FileInputStream; import java.io.F...

解压缩功能的实现--使用XZip与XUnzip

使用的XZip版本1.3  源程序可在Codeproject上获得,本教程实例代码下载 建立基于对话框的MFC程序(XZip是不依赖MFC)添加XZip到项目,并添加头文件引用,至此可以使用XZip...

自写图片遮罩层放大功能jquery插件源码,photobox.js 1.0版,不兼容IE6

阿嚏~~~ 话说本屌丝没啥开发插件的经验,但是天公不作美,公司需要让我自己开发个图片放大的插件 但公司老大的话,犹如吾皇之升值,微臣必当肝脑涂地,莫敢不从啊~~~ 于是乎,作为一个超级小白,本人只...

IE协同浏览功能及网页批注源码

  • 2008年10月22日 14:21
  • 899KB
  • 下载

Python3.2 实现zip压缩与解压缩功能

刚接触Python,用Python3试着写了一个Zip文件的压缩和解压缩脚本,不足之处,欢迎拍砖 功能有限,要按照脚本压缩文件或者文件夹,必须进入文件所在目录,以文件所在目录为工作路径,并且默认压缩后...

java实现简单压缩与解压缩功能

ZIP是一种很常见的压缩形式,在java中要实现ZIP的压缩主要用到的是java.util.zip这个包里面的类。 这个包里主要有ZipFile、 ZipOutputStream、ZipInputS...

C#+ICSharpCode.SharpZipLib.dll实现压缩解压缩功能

注意事项:需要下载最新版本的dll。现在用的是86版本的dll public class ZipClass     {         public static int avg = 1024 ...

关于C++类库KYLib: 固定缓冲区的压缩/解压缩类源码

固定缓冲区的压缩/解压缩类源码及测试例子: http://download.csdn.net/detail/kyee/5052133 固定缓冲区的压缩/解压缩算法,适用于网络传输数据包的压缩,具...
  • kyee
  • kyee
  • 2013年02月04日 14:15
  • 878

源码在线解压缩

  • 2014年08月13日 12:52
  • 68KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[DNN学习所得]让IE也能实现解压缩功能(提供演示源码下载)
举报原因:
原因补充:

(最多只允许输入30个字)