|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况;紧缩起首,在http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx下载源码,找到“ZipConstants.cs”修正
publicstaticstringConvertToString(byte[]data)
{
returnEncoding.GetEncoding("gb2312").GetString(data,0,data.Length);
//returnEncoding.ASCII.GetString(data,0,data.Length);
}
publicstaticbyte[]ConvertToArray(stringstr)
{
returnEncoding.GetEncoding("gb2312").GetBytes(str);
//returnEncoding.ASCII.GetBytes(str);
}
云云便可撑持中文称号了
以下是我写的紧缩与解紧缩的代码:
usingSystem;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Web;
usingSystem.Web.SessionState;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.HtmlControls;
usingICSharpCode.SharpZipLib.Zip;
namespaceOA
{
///<summary>
///WebForm1的择要申明。
///</summary>
publicclassWebForm1:System.Web.UI.Page
{
publicstringServerDir;
privatevoidPage_Load(objectsender,System.EventArgse)
{
//在此处安排用户代码以初始化页面
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");
}
publicstringShortDir(strings)
{
//将文件的相对路径转为绝对路径
stringd=s.Replace(ServerDir,"");
returnd;
}
//紧缩文件p为客户端传返来的文件列表:文件名+紧缩包的称号
publicvoidZipFile(stringp)
{
string[]tmp=p.Split(newchar[]{*});//分别文件列表
if(tmp[tmp.Length-1]!="")//紧缩包称号不为空
{
ZipOutputStreamu=newZipOutputStream(File.Create(ServerDir+tmp[tmp.Length-1]));//新建紧缩文件流“ZipOutputStream”
for(inti=0;i<tmp.Length-1;i++)
{
if(tmp[i]!="")//分别出来的文件名不为空
{
this.AddZipEntry(tmp[i],u,outu);//向紧缩文件流到场内容
}
}
u.Finish();//停止紧缩
u.Close();
}
}
//增加紧缩项目:p为需紧缩的文件或文件夹;u为现有的源ZipOutputStream;outj为已增加“ZipEntry”的“ZipOutputStream”
publicvoidAddZipEntry(stringp,ZipOutputStreamu,outZipOutputStreamj)
{
strings=ServerDir+p;
if(Directory.Exists(s))//文件夹的处置
{
DirectoryInfodi=newDirectoryInfo(s);
//***********以下内容是订正后增加的***********
if(di.GetDirectories().Length<=0)//没有子目次
{
ZipEntryz=newZipEntry(p+"");//开端“”用于文件夹的标志
u.PutNextEntry(z);
}
//***************以上内容是订正后增加的***************
foreach(DirectoryInfotemindi.GetDirectories())//猎取子目次
{
ZipEntryz=newZipEntry(this.ShortDir(tem.FullName)+"");//开端“”用于文件夹的标志
u.PutNextEntry(z);//此句不成少,不然空目次不会被增加
s=this.ShortDir(tem.FullName);
this.AddZipEntry(s,u,outu);//递回
}
foreach(FileInfotempindi.GetFiles())//猎取此目次的文件
{
s=this.ShortDir(temp.FullName);
this.AddZipEntry(s,u,outu);//递回
}
}
elseif(File.Exists(s))//文件的处置
{
</p>无法实现跨操作系统的应用。当然这也是微软的理由之一,只有这样才能发挥ASP最佳的能力。可是我却认为正是Windows限制了ASP,ASP的概念本就是为一个能让系统运行于一个大的多样化环境而设计的; |
|