【原创】ASP.NET C# 压缩和解压缩文件、文件夹函数(测试通过)
//注意:本文为博主原创,转载请注明出处,谢谢合作!
#region 文件下载函数DownFile
/// <summary>
/// 下载文件方法
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static bool DownFile(string filePath)
{
try
{
if (File.Exists(filePath))
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + filePath);
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.WriteFile(filePath);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Close();
HttpContext.Current.Response.End();
return true;
}
else
{
return false;
}
}
catch
{
return false;
}
}
#endregion
#region 文件夹压缩解压缩
/// <summary>
/// 使用WinRAR解压缩文件
/// </summary>
/// <param name="srcFilePath">要压缩的文件</param>
/// <param name="aimFilePath">保存压缩文件的路径</param>
/// <returns>压缩成功返回true,否则返回false</returns>
public static bool CreatRAR(string srcFilePath, string aimFilePath)
{
try
{
if (System.IO.File.Exists(aimFilePath))
System.IO.File.Delete(aimFilePath);
if (!System.IO.File.Exists(srcFilePath))
return false;
System.Diagnostics.Process ProcessRar = new System.Diagnostics.Process();
ProcessRar.StartInfo.FileName = "Winrar.exe";
ProcessRar.StartInfo.CreateNoWindow = true;
ProcessRar.StartInfo.Arguments = " a -r " + aimFilePath + " " + srcFilePath;
ProcessRar.Start();
ProcessRar.WaitForExit();
bool bln = false;
if (ProcessRar.HasExited)
if (ProcessRar.ExitCode == 0)
bln = true;
ProcessRar.Close();
return bln;
}
catch
{
return false;
}
}
/// <summary>
/// 使用WinRAR解压缩文件
/// </summary>
/// <param name="aimPath">解压文件存储的路径</param>
/// <param name="srcFilePath">压缩文件的完整地址</param>
/// <returns>解压完成返回true,否则返回false</returns>
public static bool UnRAR(string srcFilePath, string aimPath)
{
try
{
if (System.IO.File.Exists(srcFilePath))
{
string rarName = srcFilePath.Split('\\')[srcFilePath.Split('\\').Length - 1];
string rarPath = srcFilePath.Remove(srcFilePath.LastIndexOf(rarName) - 1);
Microsoft.Win32.RegistryKey regkey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(@"Applications\WinRAR.exe\shell\open\command");
System.Object regvalue = regkey.GetValue("");
string rarexe = regvalue.ToString();
regkey.Close();
rarexe = rarexe.Substring(1, rarexe.Length - 7);
if (!System.IO.File.Exists(aimPath))
System.IO.Directory.CreateDirectory(aimPath);
//解压缩命令,相当于在要压缩文件(rarName)上点右键->WinRAR->解压文件->目标路径(aimPath)
string cmd = string.Format("x {0} {1} -y ", rarName, aimPath);
System.Diagnostics.ProcessStartInfo startinfo = new System.Diagnostics.ProcessStartInfo();
startinfo.FileName = rarexe;
startinfo.Arguments = cmd;
startinfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startinfo.WorkingDirectory = rarPath;
System.Diagnostics.Process ProcessRar = new System.Diagnostics.Process();
ProcessRar.StartInfo = startinfo;
ProcessRar.Start();
ProcessRar.WaitForExit();
bool bln = false;
if (ProcessRar.HasExited)
if (ProcessRar.ExitCode == 0)
bln = true;
ProcessRar.Close();
return bln;
}
else
{
return false;
}
}
catch
{
return false;
}
}
#endregion
/*
* 限制
路径名长度小于 259 个字符。
最大的压缩文件注释的长度是62000字节。
命令限制:
命令 'd','u','f','c','cf' 不能用于分卷压缩文件。
命令 'a' 不能用来更新分卷压缩文件,只能用来创建。
* 返回值
成功操作后返回 0 。非 0 返回码意味着操作由于某种错误被取消:
255 用户中断 用户中断操作
9 创建错误 创建文件错误
8 内存错误 没有足够的内存进行操作
7 用户错误 命令行选项错误
6 打开错误 打开文件错误
5 写错误 写入磁盘错误
4 被锁定压缩文件 试图修改先前使用 'k' 命令锁定的压缩文件
3 CRC 错误 解压缩时发生一个 CRC 错误,当密码不对时返回3
2 致命错误 发生一个致命错误
1 警告 没有发生致命错误
0 成功 操作成功
*RAR参数:
一、压缩命令
1、将temp.txt压缩为temp.rar 参数为: rar a temp.rar temp.txt
2、将当前目录下所有文件压缩到temp.rar 参数为: rar a temp.rar *.*
3、将当前目录下所有文件及其所有子目录压缩到temp.rar 参数为: rar a temp.rar *.* -r
4、将当前目录下所有文件及其所有子目录压缩到temp.rar,并加上密码123 参数为: rar a temp.rar *.* -r -p123
二、解压命令
1、将temp.rar解压到c:\temp目录rar e temp.rar c:\temprar e *.rar c:\temp(支持批量操作)
2、将temp.rar解压到c:\temp目录,并且解压后的目录结构和temp.rar中的目录结构一
压缩目录test及其子目录的文件内容
Wzzip test.zip test -r -P
WINRAR A test.rar test -r
删除压缩包中的*.txt文件
Wzzip test.zip *.txt -d
WinRAR d test.rar *.txt
刷新压缩包中的文件,即添加已经存在于压缩包中但更新的文件
Wzzip test.zip test -f
Winrar f test.rar test
更新压缩包中的文件,即添加已经存在于压缩包中但更新的文件以及新文件
Wzzip test.zip test -u
Winrar u test.rar test
移动文件到压缩包,即添加文件到压缩包后再删除被压缩的文件
Wzzip test.zip -r -P -m
Winrar m test.rar test -r
添加全部 *.exe 文件到压缩文件,但排除有 a或b
开头名称的文件
Wzzip test *.exe -xf*.* -xb*.*
WinRAR a test *.exe -xf*.* -xb*.*
加密码进行压缩
Wzzip test.zip test
-s123。注意密码是大小写敏感的。在图形界面下打开带密码的压缩文件,会看到+号标记(附图1)。
WINRAR A test.rar test -p123
-r。注意密码是大小写敏感的。在图形界面下打开带密码的压缩文件,会看到*号标记(附图2)。
按名字排序、以简要方式列表显示压缩包文件
Wzzip test.zip -vbn
Rar l test.rar
锁定压缩包,即防止未来对压缩包的任何修改
无对应命令
Winrar k test.rar
创建360kb大小的分卷压缩包
无对应命令
Winrar a -v360 test
带子目录信息解压缩文件
Wzunzip test -d
Winrar x test -r
不带子目录信息解压缩文件
Wzunzip test
Winrar e test
解压缩文件到指定目录,如果目录不存在,自动创建
Wzunzip test newfolder
Winrar x test newfolder
解压缩文件并确认覆盖文件
Wzunzip test -y
Winrar x test -y
解压缩特定文件
Wzunzip test *.txt
Winrar x test *.txt
解压缩现有文件的更新文件
Wzunzip test -f
Winrar x test -f
解压缩现有文件的更新文件及新文件
Wzunzip test -n
Winrar x test -u
批量解压缩文件
Wzunzip *.zip
WinRAR e *.rar
*/
【原创】ASP.NET C# 压缩和解压缩文件、文件夹函数(测试通过)相关推荐
- asp在线压缩和解压缩文件(文件夹)
asp在线压缩和解压缩文件(文件夹) <% '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ '\\ '\\ 1. c:\ ...
- asp.net在线压缩和解压缩的实现
我们经常会遇到批量上传的问题,也会遇到将某个目录下所有文件都上传到服务器上的问题.那么,如何解决此类问题呢?以前的技术一般采用ActiveX等方式,这里我采用SharpZlib来实现,听说VS2005 ...
- java 解压与压缩代码_Java实现多文件压缩和解压缩代码详解
Java实现多文件压缩和解压缩代码 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStre ...
- linux下文件的压缩和解压缩
linux下文件的压缩和解压缩 目录 1.压缩 2.解压缩 3.归档工具 一. 压缩 compress: -d:解压缩,相当于uncompres-c:结果输出至标准输出,不删除原文件-v:显示详情 - ...
- Qt中用QuaZip来压缩和解压缩文件
1.简介 QuaZIP是使用Qt,C++对ZLIB进行简单封装的用于压缩ZIP以及解压缩ZIP的开源库.如果你的Qt项目当中用到了压缩以及解压缩ZIP的话你可以考虑选择使用它. 官方主页:http:/ ...
- 在C#中利用SharpZipLib进行文件的压缩和解压缩
我在做项目的时候需要将文件进行压缩和解压缩,于是就从http://www.icsharpcode.net下载了关于压缩和解压缩的源码,但是下载下来后,面对这么多的代码,一时不知如何下手.只好耐下心来, ...
- java.util.zip_[Java 基础] 使用java.util.zip包压缩和解压缩文件
Java API中的import java.util.zip.*;包下包含了Java对于压缩文件的所有相关操作. 我们可以使用该包中的方法,结合IO中的相关知识,进行文件的压缩和解压缩相关操作. Zi ...
- IOS开发之网络编程--文件压缩和解压缩
2019独角兽企业重金招聘Python工程师标准>>> 前言: QQ表情包就用到了解压缩,从网络下载的那么多表情文件格式并不是一个一个图片文件,而是多个图片压缩而成的表情压缩包.下面 ...
- 利用WinRar压缩和解压缩文件
今天的rar shell只是一个简单应用,rar.exe和winrar.exe语法都是一样的. 对rar而言,用rar.exe最好,不需要判断winrar在哪里,而且非常小,因为没有界面,所有压缩选项 ...
- python怎样压缩和解压缩ZIP文件
python怎样压缩和解压缩ZIP文件(转) 有时我们需要在 Python 中使用 zip 文件,而在1.6版中,Python 就已经提供了 zipfile 模块可以进行这样的操作.不过 Python ...
最新文章
- Python中非常有用的三个数据科学库
- Silverlight Toolkit DataGrid - 单元格内容对齐样式
- docwizard c++程序文档自动生成工具_如何开发一个基于 TypeScript 的工具库并自动生成文档
- @SessionAttributes 和 @SessionAttribute的区别
- 一文带你读懂单目视觉SLAM数据关联优化
- 超级计算机预报威海雨雪,威海历史天气预报查询_2018年12月份威海天气记录_威海2018年12月份天气情况_天气后报...
- 装饰模式 -- 大话设计模式
- JDBC 数据连接池
- 翁恺老师的细胞自动机
- CT一般扫描参数_工业CT检测服务
- 超详细!联想小新700黑苹果双系统完整教程(1)
- vhd虚拟机安装linux,总算搞定vhd的linux了(包括深度linux),给像我一样的菜鸟总结一下.........
- APP安全性检查报告整改
- 联想计算机CDROM启动,光驱启动,联想电脑光驱启动
- 【MySQL】听柠檬班公开课后,学习笔记及作业(一)
- 史上最通俗易懂的理解云计算
- typescript学习笔记1-tsconfig.json配置和变量类型声明
- python语言平台无关_从零开始学Python自然语言处理(十二)——上下文无关文法...
- 以太坊开发入门,完整入门篇(小白可以看看,高手看看自己有没有遗漏的
- 使用Python PySNMP模块获取设备指标