使用ZIPEntry类压缩/解压文件夹
先从网上下载类库
ZipOutputStream:压缩,zip文件
ZipEntry对象:
/结尾:文件夹:aa/
没有/结尾:文件
ZipInputStream:解压:
读取的每一个元素都是zipEntry类的对象。
利用ZipEntry类的属性:isDirectory判断是否为文件夹
ZipEntry类--ssZipEntry
stants,Cloneable
此类代表一个Zip文件实体(项)
构建器
publicZipEntry(String?name):用特殊的名字来创建一个新的zip对象(不能使用中文)
publicZipEntry(ZipEntry?e):用另外一个实体对象来创建新的实体对象
实例方法
publicStringgetComment():得到此实体的注释,没有则返回null
范例:
publicbooleanisDirectory():判断是否是一个目录实体,即是否是目录,系统将依靠此zip实体
的名字中是否以一个/结束来做判断,有,则是目录,没有,则不是目录
publicStringtoString():返回代表Zip实体的字符串表示
publiclonggetCompresdSize():得到此实体的压缩后的大小,返回-1表示未知
publicStringgetName():得到实体的名字
publicvoidtTime(long?time):设置此实体修改的时间,时间从纪元开始到修改时间的毫
秒数字
publiclonggetTime():得到此实体修改的时间
publicvoidtSize(long?size):设定该实体的字节大小
publiclonggetSize():得到此实体的大小
publicvoidtCrc(long?crc):设置该实体的校验和
publiclonggetCrc():得到该实体的校验和
1、压缩文件夹
ums;
;
;
;
privatevoidbutton1_Click(objectnder,EventArg)
{
ZipFile("E:ziptest","E:");
}
publicvoidZipFile(stringstrFile,stringstrZip)
{
if(strFile[-1]!=orySeparatorChar)
strFile+=orySeparatorChar;
ZipOutputStreams=newZipOutputStream((strZip));
el(6);
//0-storeonlyto9-meansbestcompression
zip(strFile,s,strFile);
();
();
}
privatevoidzip(stringstrFile,ZipOutputStreams,stringstaticFile)
{
if(strFile[-1]!=orySeparatorChar)strFile+=
orySeparatorChar;
Crc32crc=newCrc32();
string[]filenames=eSystemEntries(strFile);
foreach(stringfileinfilenames)
{
if((file))
{zip(file,s,staticFile);}
el//否则直接压缩文件
{//打开压缩文件
FileStreamfs=ad(file);
byte[]buffer=newbyte[];
(buffer,0,);
stringtempfile=ing(dexOf("")+1);
ZipEntryentry=newZipEntry(tempfile);
me=;
=;
();
();
(buffer);
=;
tEntry(entry);
(buffer,0,);
}
}
}
2、解压
stringunZipFile(stringTargetFile,stringfileDir)
{
stringrootFile="";
try
{
//读取压缩文件(zip文件),准备解压缩
ZipInputStreams=newZipInputStream(ad(()));
ZipEntrytheEntry;
stringpath=fileDir;
//解压出来的文件保存的路径
stringrootDir="";
//根目录下的第一个子文件夹的名称
while((theEntry=tEntry())!=null)
{
rootDir=ectoryName();
//得到根目录下的第一级子文件夹的名称
if(f("")>=0)
{
rootDir=ing(0,f("")+1);
}
stringdir=ectoryName();
//根目录下的第一级子文件夹的下的文件夹的名称
stringfileName=eName();
//根目录下的文件名称
if(dir!="")
//创建根目录下的子文件夹,不限制级别
{
if(!(fileDir+""+dir))
{
path=fileDir+""+dir;
//在指定的路径创建文件夹
Directory(path);
}
}
elif(dir==""&&fileName!="")
//根目录下的文件
{
path=fileDir;
rootFile=fileName;
}
elif(dir!=""&&fileName!="")
//根目录下的第一级子文件夹下的文件
{
if(f("")>0)
//指定文件保存的路径
{
path=fileDir+""+dir;
}
}
if(dir==rootDir)
//判断是不是需要保存在根目录下的文件
{
path=fileDir+""+rootDir;
}
//以下为解压缩zip文件的基本步骤
//基本思路就是遍历压缩文件里的所有文件,创建一个相同的文件。
if(fileName!=)
{
FileStreamstreamWriter=(path+""+fileName);
intsize=2048;
byte[]data=newbyte[];
while(true)
{
size=(data,0,);
if(size>0)
{
(data,0,);
}
el
{
break;
}
}
();
}
}
();
returnrootFile;
}
catch(Exceptionex)
{
return"1;"+e;
}
}
}
如果是单个文件的压缩/解压一般使用gzipstream类,参见使用GZipStream类将文件压缩/
解压到指定路径
本文发布于:2023-03-03 16:54:14,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1677833655125354.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:文件夹压缩.doc
本文 PDF 下载地址:文件夹压缩.pdf
留言与评论(共有 0 条评论) |