我们经常会遇到编制VS2003压缩代码的问题,也会遇到将VS2003压缩代码修改的的问题。那么,如何解决此类问题呢?下文就给大家进行全面的讲解。
昨天到今天搞了一整天的VS2003压缩代码,我都快崩溃了! 一看到那些代码,脑袋顿时就像爆炸一样,所以有了许多的问题出现,还好,我一个个把他记录下来了,同时,在相关论坛上找了一些相关的解决办法,分享一下,供大家相互学习交流
1、首先从这里下载0.84版本的VS2003压缩代码及示例码。
2、下载下来之后你发现它没有VS2003的解决方案文件,没有关系。你可以自己建立,首先新建一个ZipUnzip的解决方案,然后,将上面经过解压缩之后的所有文件及目录COPY到你的解决方案所在的目录下。 #t#
3、在VS2003解决方案资源管理器(一般是在右上方中部点的位置)中点击显示所有文件按钮,然后可以见到很多“虚”的图标、文件及文件夹等,可以一次选择它们,然后包含进项目中。
4、编译,***使用Release选项,编译完成之后你可以在\bin\Release\看到ZipUnzip.dll的类了。如果你编译时报错,说什么AssemblyKeyFile之类的,你可以使用强命名工具新建一个,也可以将AssemblyInfo.cs中[assembly: AssemblyKeyFile("。。。。。")]改成:[assembly: AssemblyKeyFile("")] (不推荐这样做)。
5、新建一个WEBFORM项目,添加ZipUnzip.dll类的引用,然后添加如下文件及内容:
- usingSystem;
- usingSystem.IO;
- usingICSharpCode.SharpZipLib.Zip;
- usingICSharpCode.SharpZipLib.GZip;
- usingICSharpCode.SharpZipLib.BZip2;
- usingICSharpCode.SharpZipLib.Checksums;
- usingICSharpCode.SharpZipLib.Zip.Compression;
- usingICSharpCode.SharpZipLib.Zip.Compression.Streams;
- namespaceWebZipUnzip
- {
- publicclassAttachmentUnZip
- {
- publicAttachmentUnZip()
- {}
- publicstaticvoidUpZip(stringzipFile)
- {
- string[]FileProperties=newstring[2];
- FileProperties[0]=zipFile;//待解压的文件
- FileProperties[1]=zipFile.Substring(0,zipFile.LastIndexOf("\\")+1);//解压后放置的目标目录
- UnZipClassUnZc=newUnZipClass();
- UnZc.UnZip(FileProperties);
- }
- }
- }
- //---------------------------------------------
- //2.UnZipClass.cs
- //---------------------------------------------
- usingSystem;
- usingSystem.IO;
- usingICSharpCode.SharpZipLib.Zip;
- usingICSharpCode.SharpZipLib.GZip;
- usingICSharpCode.SharpZipLib.BZip2;
- usingICSharpCode.SharpZipLib.Checksums;
- usingICSharpCode.SharpZipLib.Zip.Compression;
- usingICSharpCode.SharpZipLib.Zip.Compression.Streams;
- namespaceWebZipUnzip
- {
- publicclassUnZipClass
- {
- ///
- ///解压文件
- ///
- ///包含要解压的文件名和要解压到的目录名数组
- publicvoidUnZip(string[]args)
- {
- ZipInputStreams=newZipInputStream(File.OpenRead(args[0]));
- try
- {
- ZipEntrytheEntry;
- while((theEntry=s.GetNextEntry())!=null)
- {
- stringdirectoryName=Path.GetDirectoryName(args[1]);
- stringfileName=Path.GetFileName(theEntry.Name);
- //生成解压目录
- Directory.CreateDirectory(directoryName);
- if(fileName!=String.Empty)
- {
- //解压文件到指定的目录
- FileStreamstreamWriter=File.Create(args[1]+fileName);
- intsize=2048;
- byte[]data=newbyte[2048];
- while(true)
- {
- ssize=s.Read(data,0,data.Length);
- if(size>0)
- {
- streamWriter.Write(data,0,size);
- }
- else
- {
- break;
- }
- }
- streamWriter.Close();
- }
- }
- s.Close();
- }
- catch(Exceptioneu)
- {
- throweu;
- }
- finally
- {
- s.Close();
- }
- }//endUnZip
- publicstaticboolUnZipFile(stringfile,stringdir)
- {
- try
- {
- if(!Directory.Exists(dir))
- Directory.CreateDirectory(dir);
- stringfileFullName=Path.Combine(dir,file);
- ZipInputStreams=newZipInputStream(File.OpenRead(fileFullName));
- ZipEntrytheEntry;
- while((theEntry=s.GetNextEntry())!=null)
- {
- stringdirectoryName=Path.GetDirectoryName(theEntry.Name);
- stringfileName=Path.GetFileName(theEntry.Name);
- if(directoryName!=String.Empty)
- Directory.CreateDirectory(Path.Combine(dir,directoryName));
- if(fileName!=String.Empty)
- {
- FileStreamstreamWriter=File.Create(Path.Combine(dir,theEntry.Name));
- intsize=2048;
- byte[]data=newbyte[2048];
- while(true)
- {
- ssize=s.Read(data,0,data.Length);
- if(size>0)
- {
- streamWriter.Write(data,0,size);
- }
- else
- {
- break;
- }
- }
- streamWriter.Close();
- }
- }
- s.Close();
- returntrue;
- }
- catch(Exception)
- {
- throw;
- }
- }
- }//endUnZipClass
- }
此方案解决了文件名中文字的问题,目录VS2003压缩代码问题,至于整个文件夹批量上传并压缩成一个WINZIP压缩包的问题,没有时间解决了,各位如有解决方案,不妨共享一下。
转载请说明出处
知优网 » 阐述VS2003压缩代码的有关常识
知优网 » 阐述VS2003压缩代码的有关常识