- 浏览: 174411 次
- 性别:
- 来自: 山东菏泽
文章分类
最新评论
-
yqfly2008:
对于某个值修改两次或以上后,仍然和最初的值相同,这样能判断出来 ...
Jquery判断表单是否修改 -
liujiejk520:
重新编译了,问题解决了,呵,不用麻烦你了。我真是个冒失鬼不好意 ...
asp+asp.net HttpHandler 头像截图(asp头像截图) -
liujiejk520:
我下了asp版的在升级了jquery-1.6后图片不能旋转了, ...
asp+asp.net HttpHandler 头像截图(asp头像截图) -
kqy929:
Hi,非常感谢你这篇文章,照你说的,我也部署好coreseek ...
ubuntu910下安装coreseek中文全文索引 -
zhiye:
请问这个问题有得解吗?谢谢
http://www.iteye. ...
javascript滚动类
做东西时用到的
使用ICSharpCode.SharpZipLib.dll实现
附件中有,也可下载源代码
主要是添加了两个类
使用ICSharpCode.SharpZipLib.dll实现
附件中有,也可下载源代码
主要是添加了两个类
using System; using System.Collections.Generic; using System.Text; using System.IO; using ICSharpCode.SharpZipLib; using ICSharpCode.SharpZipLib.Zip; using ICSharpCode.SharpZipLib.Checksums; namespace SharpZipLib { /// /// 压缩类 /// public class ZipClass { /// <summary> /// 递归压缩文件夹方法 /// </summary> /// <param name="FolderToZip"></param> /// <param name="s"></param> /// <param name="ParentFolderName"></param> /// <returns></returns> private bool ZipFileDictory(string FolderToZip, ZipOutputStream s, string ParentFolderName) { bool res = true; string[] folders, filenames; ZipEntry entry = null; FileStream fs = null; Crc32 crc = new Crc32(); try { //创建当前文件夹 entry = new ZipEntry(Path.Combine(ParentFolderName, Path.GetFileName(FolderToZip) + "/")); //加上 “/” 才会当成是文件夹创建 s.PutNextEntry(entry); s.Flush(); //先压缩文件,再递归压缩文件夹 filenames = Directory.GetFiles(FolderToZip); foreach (string file in filenames) { //打开压缩文件 fs = File.OpenRead(file); byte[] buffer = new byte[fs.Length]; fs.Read(buffer, 0, buffer.Length); entry = new ZipEntry(Path.Combine(ParentFolderName, Path.GetFileName(FolderToZip) + "/" + Path.GetFileName(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); } } catch { res = false; } finally { if (fs != null) { fs.Close(); fs = null; } if (entry != null) { entry = null; } GC.Collect(); GC.Collect(1); } folders = Directory.GetDirectories(FolderToZip); foreach (string folder in folders) { if (!ZipFileDictory(folder, s, Path.Combine(ParentFolderName, Path.GetFileName(FolderToZip)))) { return false; } } return res; } /// /// 压缩目录 /// /// 待压缩的文件夹,全路径格式 /// 压缩后的文件名,全路径格式 private bool ZipFileDictory(string FolderToZip, string ZipedFile, String Password) { bool res; if (!Directory.Exists(FolderToZip)) { return false; } ZipOutputStream s = new ZipOutputStream(File.Create(ZipedFile)); s.SetLevel(6); s.Password = Password; res = ZipFileDictory(FolderToZip, s, ""); s.Finish(); s.Close(); return res; } /// /// 压缩文件 /// /// 要进行压缩的文件名 /// 压缩后生成的压缩文件名 /// public static bool ZipFile(string FileToZip, string ZipedFile, String Password) { //如果文件没有找到,则报错 if (!File.Exists(FileToZip)) { throw new System.IO.FileNotFoundException("指定要压缩的文件: " + FileToZip + " 不存在!"); } //FileStream fs = null; FileStream ZipFile = null; ZipOutputStream ZipStream = null; ZipEntry ZipEntry = null; bool res = true; try { ZipFile = File.OpenRead(FileToZip); byte[] buffer = new byte[ZipFile.Length]; ZipFile.Read(buffer, 0, buffer.Length); ZipFile.Close(); ZipFile = File.Create(ZipedFile); ZipStream = new ZipOutputStream(ZipFile); ZipStream.Password = Password; ZipEntry = new ZipEntry(Path.GetFileName(FileToZip)); ZipStream.PutNextEntry(ZipEntry); ZipStream.SetLevel(6); ZipStream.Write(buffer, 0, buffer.Length); } catch { res = false; } finally { if (ZipEntry != null) { ZipEntry = null; } if (ZipStream != null) { ZipStream.Finish(); ZipStream.Close(); } if (ZipFile != null) { ZipFile.Close(); ZipFile = null; } GC.Collect(); GC.Collect(1); } return res; } /// <summary> /// 压缩文件 和 文件夹 /// </summary> /// <param name="FileToZip">待压缩的文件或文件夹,全路径格式</param> /// <param name="ZipedFile"> 压缩后生成的压缩文件名,全路径格式</param> /// <param name="Password">密码</param> /// <returns></returns> public bool Zip(String FileToZip, String ZipedFile, String Password) { if (Directory.Exists(FileToZip)) { return ZipFileDictory(FileToZip, ZipedFile, Password); } else if (File.Exists(FileToZip)) { return ZipFile(FileToZip, ZipedFile, Password); } else { return false; } } } } /// <summary> /// 解压类 ///解压缩 ///该程序压缩和解压配合才能使用 ///普通用 Winrar 压缩的文件该解压不能通过 /// </summary> public class UnZipClass { /// <summary> /// 解压功能(解压压缩文件到指定目录) /// </summary> /// <param name="FileToUpZip">待解压的文件</param> /// <param name="ZipedFolder">指定解压目标目录</param> /// <param name="Password">密码</param> public bool UnZip(string FileToUpZip, string ZipedFolder, string Password) { if (!File.Exists(FileToUpZip)) { return false; } if (!Directory.Exists(ZipedFolder)) { Directory.CreateDirectory(ZipedFolder); } ZipInputStream s = null; ZipEntry theEntry = null; string fileName; FileStream streamWriter = null; try { s = new ZipInputStream(File.OpenRead(FileToUpZip)); s.Password = Password; while ((theEntry = s.GetNextEntry()) != null) { if (theEntry.Name != String.Empty) { fileName = Path.Combine(ZipedFolder, theEntry.Name); /**/ ///判断文件路径是否是文件夹 if (fileName.EndsWith("/") || fileName.EndsWith("\\")) { Directory.CreateDirectory(fileName); continue; } streamWriter = File.Create(fileName); 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; } } } } } finally { if (streamWriter != null) { streamWriter.Close(); streamWriter = null; } if (theEntry != null) { theEntry = null; } if (s != null) { s.Close(); s = null; } GC.Collect(); GC.Collect(1); } return true; } }
using System; using System.Collections.Generic; using System.Text; using System.IO; namespace SharpZipLib { class Program { static void Main(string[] args) { if (args.Length == 0) { Console.WriteLine("参数错误"); return; } string password = string.Empty; if ((args[0] == "-z" || args[0] == "-Z") && args.Length > 2) { ZipClass zip = new ZipClass(); if (args.Length == 4) { password = args[3]; } if (zip.Zip(args[1], args[2], password)) { Console.WriteLine("压缩成功 (*^__^*) "); } else { Console.WriteLine("压缩失败 ~~~~(>_<)~~~~ "); } } if ((args[0] == "-u" || args[0] =="-U") && args.Length > 2) { UnZipClass unzip = new UnZipClass(); if (args.Length == 4) { password=args[3]; } if (!File.Exists(args[1])) { Console.WriteLine("要解压的文件不存在 ~~~~(>_<)~~~~"); return; } if (unzip.UnZip(args[1], args[2], password)) { Console.WriteLine("解压成功 (*^__^*) "); return; } else { Console.WriteLine("解压失败 ~~~~(>_<)~~~~ "); return; } } } } }
- ICSharpCode.SharpZipLib.rar (75.6 KB)
- 下载次数: 43
- Zip.rar (174.4 KB)
- 描述: 源码(VSS 2005)
- 下载次数: 54
发表评论
-
asp+asp.net HttpHandler 头像截图(asp头像截图)
2010-07-29 11:53 2227碰到网友问能不能帮他解决ASP下的网站用户会员截图,网上找了下 ... -
eclipse和xdebug调试PHP配置方法
2010-07-09 11:42 3133工欲善其事必先利其器,要想写好好的程序,不光要有好的思想,好的 ... -
UltraEdit的正则表达式查找和替换
2009-12-01 15:28 2972Ultraedit在使用正则表达式进行查找替换时有 ... -
又一次迷茫了
2009-11-10 14:46 910前段时间接手的.NET项目做完了 现在想学下开源的东西.鄙视 ... -
PowerDesigner设置集锦
2009-09-27 10:26 2389powerdesiner的自增长列 1.如果dbms是M ... -
C#加密解密文件
2009-06-19 15:34 2639using System; using System.IO; ... -
简单C# Tcp文件传输
2009-06-16 23:12 6318using System; using System.Net ... -
XML、XSLT实现三级菜单
2009-02-20 13:26 1268套用别人的样式自己改的 代码和效果见附件 此 ... -
asp.net中VML图表控件
2009-01-14 16:13 2366最近老是用到报表的东西 找到些JS的看写的还不错 就自己弄了一 ... -
SQL中的split
2009-01-14 16:08 1441CREATE function FGet_StrArraySt ... -
Installshield2008使用心得(打包web工程)
2008-12-15 11:59 24281.新建InstallScript Project 2.在P ... -
批处理执行SQL脚本文件
2008-12-09 11:59 1851前些日子做的一个OA 安装时是用的MSDE,附加数据库时找到了 ... -
批处理创建IIS虚拟目录
2008-12-05 11:15 2249前段时间做一个OA,做SETUP时用到了这个 现在贴出来和大家 ... -
感觉不错
2008-12-03 09:22 900很多朋友都开始写Blog了 我以前也注册过很多,不过老感觉不 ...
相关推荐
在.NET环境中,有时候我们需要对文件或文件夹进行压缩和解压缩操作,这通常是通过引用特定的库来实现的。本文将详细介绍如何使用ICSharpCode.SharpZipLib.dll这个开源库在.NET平台上进行文件的压缩与解压缩。 ...
3. **解压安装包**:在无网络的电脑上,找到并解压缩下载的文件,这通常会生成一个包含多个文件和文件夹的结构。 4. **手动安装**:运行解压后的安装程序(通常是名为 `dotnet-sdk-3.1.xxxxx-win-x64.exe` 或 `...
这个类库包含了文件操作、网络操作、压缩解压缩、邮件处理和正则表达式等多个方面的功能,极大地提高了开发效率和代码的可复用性。 1. **文件操作**:文件操作是任何应用程序的基础,这个类库可能提供了读取、写入...
因此,要访问内嵌的Excel表格,我们需要解压缩PPTX文件,然后找到对应的XML文件。 在PowerPoint文档中,内嵌的OLE对象通常存储在`ppt/embeddings`文件夹下,其中每个对象都有一个`.bin`文件,这个文件实际上是OLE...
下载完成后,解压缩文件,你会看到一个名为 "zh-hans" 的文件夹,它包含了所有汉化的语言文件。为了使这些汉化文件生效,你需要将其正确地复制到 .NET Core 3.1 的安装目录下,通常是在 "C:\Program Files\dotnet" ...
解压缩该.dll文件并将其放在程序数据目录下或可移植安装目录内一个名为plugins/Merge Versions的文件夹中 重新启动Jellyfin 用户指南 要合并电影或情节,您可以通过计划任务或直接通过插件的配置来完成。 仅可通过...
osuBeatmapsBlocker_dotNet2 ...然后直接找bin文件夹下的主程序,随便解压缩到哪儿运行都可。 主程序会释放一个.txt文件用来配置屏蔽文件列表,里面有详细的注释,可以手动修改哦~ The application. Current versi
解压缩后,会得到一个包含FitNesseRoot、README.txt、dotnet、license.txt、fitnesse.jar、run.bat和run.sh等文件的fitnesse文件夹。双击运行run.bat(Windows)或run.sh(Linux),默认监听80端口。如果该端口已被...
解压缩该.dll文件plugins/SkinManager放在程序数据目录下或可移植安装目录内一个名为plugins/SkinManager的文件夹中。 重新启动Jellyfin。用户指南转到插件,单击“皮肤管理器”。 选择要安装的皮肤。 单击设置皮肤...
下载并解压缩该zip文件。 打开CMD并导航到名为Gossip的解压缩文件夹中名为Project2的文件夹。 运行以下命令 dotnet run project2 10000 full gossip 项目:project2 numNodes:任何整数 拓扑:完整,2D,线,...
解压缩并运行dotnet\install.cmd 重启终端 Command cm显示任何目录中的可用命令 如果已在自定义文件夹中安装了Visual Studio 2017,请在set VS150COMNTOOLS=D:\Program Files\Microsoft Visual Studio\2017\...
将flowcontrol.zip解压缩到您选择的文件夹中,然后运行flowcontrol.exe :hammer_and_wrench: 从源代码构建 流量控制 wails build 流量控制监控器 dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true...