.net文件加密压缩与解压 .net文件加密压缩与解密功能 有例子最好 邮箱[email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://tech.ddvip.com/2008-11/122595762589688.html 上网下载一个 ICSharpCode.SharpZipLib.dll /// <summary> /// 打包文件 /// </summary> /// <param name="filenames">要打包的文件列表</param> /// <param name="GzipFileName">目标文件名</param> /// <param name="CompressionLevel">压缩品质级别(0~9)</param> /// <param name="SleepTimer">休眠时间(单位毫秒)</param> public static void DoZip( List<FileInfo> filenames, string GzipFileName, int CompressionLevel, int SleepTimer ) { ZipOutputStream s = new ZipOutputStream( File.Create( GzipFileName ) ); try { s.SetLevel( CompressionLevel ); //0 - store only to 9 - means best compression foreach ( FileInfo file in filenames ) { FileStream fs = null; try { fs = file.Open( FileMode.Open, FileAccess.ReadWrite ); } catch { continue; } byte[] buffer = new byte[fs.Length]; fs.Read( buffer, 0, buffer.Length ); ZipEntry entry = new ZipEntry( Path.GetFileName( file.Name ) ); entry.DateTime = ( file.CreationTime > file.LastWriteTime ? file.LastWriteTime : file.CreationTime ); s.PutNextEntry( entry ); s.Write( buffer, 0, buffer.Length ); fs.Close(); file.Delete(); Thread.Sleep( SleepTimer ); } } finally { s.Finish(); s.Close(); } } /// <summary> /// 解压缩文件 /// </summary> /// <param name="GzipFile">压缩包文件名</param> /// <param name="dPath">解压路径</param> public static void UnZip( string GzipFile, string dPath ) { ZipInputStream s = new ZipInputStream( File.OpenRead( GzipFile ) ); string directoryName = Path.GetDirectoryName( dPath + "\\" ) + "\\"; if ( !Directory.Exists( directoryName ) ) Directory.CreateDirectory( directoryName );//生成解压目录 string CurrentDirectory = directoryName; byte[] data = new byte[2048]; int size = 2048; ZipEntry theEntry = null; FileStream streamWriter = null; while ( ( theEntry = s.GetNextEntry() ) != null ) { if ( theEntry.IsDirectory ) {// 该结点是目录 if ( !Directory.Exists( CurrentDirectory + theEntry.Name ) ) Directory.CreateDirectory( CurrentDirectory + theEntry.Name ); } else { if ( theEntry.Name != String.Empty ) { //解压文件到指定的目录 streamWriter = File.Create( CurrentDirectory + theEntry.Name ); while ( true ) { size = s.Read( data, 0, data.Length ); if ( size <= 0 ) break; streamWriter.Write( data, 0, size ); } streamWriter.Close(); } } } s.Close(); } ZipOutputStream 和ZipInputStream 都是ICSharpCode.SharpZipLib.dll 中的方法 用.Net自带的DES加解密不可以吗?例子在MSDN中。 .Net自带的加解密可以,但是千万千万不要用它的压缩,压缩比没有SharpZipLib的高,SharpZipLib可以压缩到30~40%,自带的只有70%,费解。 WPF控件属性问题:Height和width,margin C# 窗体动态设置皮肤后取消皮肤方法?重绘窗体? 关于一个等待窗体关闭的问题 请问我的调用存储过程写法有问题吗? DesignMode无效??? 类型转换问题!!帮帮忙!!! 帮看看哪里出错了 大虾们 救救小菜 请帮我把这个C#代码转成C的! 如何使用Membership进行AD用户登陆验证 100分求一个问题,急!!在线等待!!! 线程无法终止的问题 如何想Excel中插入一行
/// <summary>
/// 打包文件
/// </summary>
/// <param name="filenames">要打包的文件列表</param>
/// <param name="GzipFileName">目标文件名</param>
/// <param name="CompressionLevel">压缩品质级别(0~9)</param>
/// <param name="SleepTimer">休眠时间(单位毫秒)</param>
public static void DoZip( List<FileInfo> filenames, string GzipFileName, int CompressionLevel, int SleepTimer )
{ ZipOutputStream s = new ZipOutputStream( File.Create( GzipFileName ) );
try
{
s.SetLevel( CompressionLevel ); //0 - store only to 9 - means best compression foreach ( FileInfo file in filenames )
{
FileStream fs = null;
try
{
fs = file.Open( FileMode.Open, FileAccess.ReadWrite );
}
catch
{ continue; } byte[] buffer = new byte[fs.Length];
fs.Read( buffer, 0, buffer.Length ); ZipEntry entry = new ZipEntry( Path.GetFileName( file.Name ) );
entry.DateTime = ( file.CreationTime > file.LastWriteTime ? file.LastWriteTime : file.CreationTime ); s.PutNextEntry( entry ); s.Write( buffer, 0, buffer.Length );
fs.Close();
file.Delete(); Thread.Sleep( SleepTimer );
}
}
finally
{
s.Finish();
s.Close();
}
}
/// <summary>
/// 解压缩文件
/// </summary>
/// <param name="GzipFile">压缩包文件名</param>
/// <param name="dPath">解压路径</param>
public static void UnZip( string GzipFile, string dPath )
{
ZipInputStream s = new ZipInputStream( File.OpenRead( GzipFile ) ); string directoryName = Path.GetDirectoryName( dPath + "\\" ) + "\\"; if ( !Directory.Exists( directoryName ) ) Directory.CreateDirectory( directoryName );//生成解压目录
string CurrentDirectory = directoryName; byte[] data = new byte[2048];
int size = 2048; ZipEntry theEntry = null;
FileStream streamWriter = null;
while ( ( theEntry = s.GetNextEntry() ) != null )
{
if ( theEntry.IsDirectory )
{// 该结点是目录
if ( !Directory.Exists( CurrentDirectory + theEntry.Name ) ) Directory.CreateDirectory( CurrentDirectory + theEntry.Name );
}
else
{
if ( theEntry.Name != String.Empty )
{
//解压文件到指定的目录
streamWriter = File.Create( CurrentDirectory + theEntry.Name );
while ( true )
{
size = s.Read( data, 0, data.Length );
if ( size <= 0 ) break; streamWriter.Write( data, 0, size );
}
streamWriter.Close();
}
}
}
s.Close();
}
都是
ICSharpCode.SharpZipLib.dll 中的方法
例子在MSDN中。