c# 自动生成rar,或者zip的压缩文件。 需要有密码。 程序还要解密这个文件

soul_RIver 2012-10-24 03:36:28
如题。 求方法,思路
...全文
591 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
木头小菜 2012-10-24
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ionic.Zip;
using System.IO;

namespace WindowsFormsApplication1
{
class ZipClass
{
/// <summary>
/// 构造函数
/// </summary>
public ZipClass()
{
}

/// <summary>
/// 压缩文件
/// </summary>
/// <param name="FilePath">需要压缩文件路径集合</param>
/// <param name="FileName">压缩后文件名</param>
/// <param name="SavePath">压缩后存放路径</param>
/// <param name="PassWord">压缩密码,null为无密码</param>
/// <returns>异常消息,成功返回null</returns>
public string SetZipFile(string[] FilePath,string FileName,string SavePath,string PassWord)
{
try
{
ZipFile zipfile = new ZipFile(SavePath + "\\" + FileName + ".zip", Encoding.Default);
if (PassWord != string.Empty)
zipfile.Password = PassWord;
zipfile.AddFiles(FilePath);

zipfile.Save();
}
catch (Exception ex)
{
return ex.ToString();
}
return null;
}

/// <summary>
/// 压缩文件夹
/// </summary>
/// <param name="FilePath">需要压缩文件夹路径</param>
/// <param name="FileName">压缩后文件名</param>
/// <param name="SavePath">压缩后存放路径</param>
/// <param name="PassWord">压缩密码,null为无密码</param>
/// <returns>异常消息,成功返回null</returns>
public string SetZipFile(string FilePath, string FileName, string SavePath, string PassWord)
{
try
{
ZipFile zipfile = new ZipFile(SavePath + "\\" + FileName + ".zip", Encoding.Default);
if (PassWord != string.Empty)
zipfile.Password = PassWord;
zipfile.AddDirectory(FilePath);
zipfile.Save();
}
catch (Exception ex)
{
return ex.ToString();
}
return null;
}

/// <summary>
/// 解压文件
/// </summary>
/// <param name="FilePath">zip文件路径</param>
/// <param name="ReleasePath">解压路径</param>
/// <param name="FileName">需要解压的文件名</param>
/// <param name="PassWord">解压密码 null为无密码</param>
/// <returns>异常消息,成功返回null</returns>
public string ReleaseFile(string FilePath,string ReleasePath,string[] FileName,string PassWord)
{
try
{
ZipFile zipfile = ZipFile.Read(FilePath);
if (PassWord != string.Empty)
zipfile.Password = PassWord;
foreach(string filename in FileName)
zipfile[filename].Extract(ReleasePath);
}
catch (Exception ex)
{
return ex.ToString();
}
return null;
}

/// <summary>
/// 解压全部文件
/// </summary>
/// <param name="FilePath">zip文件路径</param>
/// <param name="ReleasePath">解压路径</param>
/// <param name="PassWord">解压密码,null为无密码</param>
/// <returns>异常消息,成功返回null</returns>
public string ReleaseAllFile(string FilePath, string ReleasePath, string PassWord)
{
try
{
ZipFile zipfile = ZipFile.Read(FilePath);
if (PassWord != string.Empty)
zipfile.Password = PassWord;
foreach (ZipEntry zipentry in zipfile)
zipentry.Extract(ReleasePath);
}
catch (Exception ex)
{
return ex.ToString();
}
return null;
}

/// <summary>
/// 从zip文件中移除文件
/// </summary>
/// <param name="FilePath">zip文件路径</param>
/// <param name="FileName">要移除的文件名集合</param>
/// <returns>异常消息,成功返回null</returns>
public string DelFile(string FilePath, string[] FileName)
{
try
{
ZipFile zipfile = ZipFile.Read(FilePath);
foreach (string filename in FileName)
zipfile.RemoveEntry(filename);
zipfile.Save();
}
catch (Exception ex)
{
return ex.ToString();
}
return null;
}

/// <summary>
/// 向zip文件内添加文件
/// </summary>
/// <param name="FilePath">zip文件路径</param>
/// <param name="AddFilePath">要添加的文件路径集合</param>
/// <returns></returns>
public string AddFile(string FilePath, string[] AddFilePath)
{
try
{
ZipFile zipfile = ZipFile.Read(FilePath);
zipfile.AddFiles(AddFilePath);
zipfile.Save();
}
catch (Exception ex)
{
return ex.ToString();
}
return null;
}
}
}
需要Ionic.Zip.dll
diecode 2012-10-24
  • 打赏
  • 举报
回复
C#提供有专门压缩类,可以直接压成zip的
有段时间没搞了
自己到msdn上查查
wuyq11 2012-10-24
  • 打赏
  • 举报
回复
Process调用rar.exe
StartInfo.Argument="a 1.rar 要压缩多文件的路径 -y"

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧