站内搜索
广告
使用SharpZip压缩与解压缩的实战经验
作者:    来源:    点击:    日期:2007-2-15 23:26:53   
首先,在 http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx 下载源码,找到“ZipConstants.cs”修改

public static string ConvertToString(byte[] data)
{
return Encoding.GetEncoding("gb2312").GetString(data, 0, data.Length);
//return Encoding.ASCII.GetString(data,0, data.Length);
}

public static byte[] ConvertToArray(string str)
{
return Encoding.GetEncoding("gb2312").GetBytes(str);
//return Encoding.ASCII.GetBytes(str);
}



如此就可支持中文名称了
以下是我写的压缩与解压缩的代码:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using ICSharpCode.SharpZipLib.Zip;



namespace OA
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
public string ServerDir;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
this.ServerDir = Page.MapPath(".");
this.ZipFile("01.txt*02.txt*000.zip"); //只是示例,具体的大家自己去实现
this.ZipFile("01.txt*02.txt*001.zip");
this.UnZipFile("000.zip*001.zip");
}


public string ShortDir(string s)
{
//将文件的绝对路径转为相对路径
string d=s.Replace(ServerDir,"");
return d;
}



//压缩文件 p 为客户端传回来的文件列表:文件名+压缩包的名称
public void ZipFile(string p)
{
string[] tmp = p.Split(new char[]{'*'}); //分离文件列表
if(tmp[tmp.Length-1]!="") //压缩包名称不为空
{
ZipOutputStream u = new ZipOutputStream(File.Create(ServerDir+tmp[tmp.Length-1])); //新建压缩文件流 “ZipOutputStream”
for(int i =0;i<tmp.Length-1;i++)
{
if(tmp[i]!="") //分离出来的文件名不为空
{
this.AddZipEntry(tmp[i],u,out u); //向压缩文件流加入内容
首页 上一页 [1] [2] [3] [4]  下一页 尾页 
使用SharpZip压缩与解压缩的实战经验 评论