怎么压缩文件夹??? 我用FastZip压缩,结果生成的文件用Winrar不能解压? 这是怎么回事,还有其他方法压缩吗?谢谢~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你需要先到网上下载ICSharpCode.SharpZipLib.dll然后引用用下面的方法实现压缩和解压缩using System;using System.Collections.Generic;using System.Text;using System.IO;using ICSharpCode.SharpZipLib.Zip;namespace NetStars{ public class ZipFiles { /// <summary> /// 创建一个压缩文件 /// </summary> /// <param name="zipFilename">压缩后的文件名</param> /// <param name="sourceDirectory">待压缩文件的所在目录</param> public static void PackFiles(string zipFilename, string sourceDirectory) { FastZip fz = new FastZip(); fz.CreateEmptyDirectories = true; fz.CreateZip(zipFilename, @sourceDirectory, true, ""); fz = null; } /// <summary> /// 解压缩文件 /// </summary> /// <param name="zipFile">待解压缩的文件</param> /// <param name="directory">解压缩后文件存放的目录</param> public static bool UnpackFiles(string zipFile, string directory) { if (!Directory.Exists(directory)) Directory.CreateDirectory(directory); ZipInputStream zis = new ZipInputStream(File.OpenRead(zipFile)); ZipEntry theEntry = null; while ((theEntry = zis.GetNextEntry()) != null) { string directoryName = Path.GetDirectoryName(theEntry.Name); string fileName = Path.GetFileName(theEntry.Name); if (directoryName != string.Empty) Directory.CreateDirectory(directory + directoryName); if (fileName != string.Empty) { FileStream streamWriter = File.Create(Path.Combine(directory, theEntry.Name)); int size = 2048; byte[] data = new byte[size]; while (true) { size = zis.Read(data, 0, data.Length); if (size > 0) streamWriter.Write(data, 0, size); else break; } streamWriter.Close(); } } zis.Close(); return true; } }} 你到http://ndoc.cn/aspxzip看看,这是个asp.net写的压缩程序,可以压缩/解压zip文件,解压rar文件 对了忘了说了,aspxzip 也是使用ICSharpCode.SharpZipLib这个组件,只不过把一些不怎么常用的压缩算法去掉了,只剩下了zip算法还有,是开源的 1楼的方法还是不行~生成的压缩文件不能用winrar打开,郁闷 我都用了,没问题,可能是压缩后的文件仍然被进程占用,所以不能打开,另外winrar的版本问题是否也应该考虑 也可能是SharpZipLib版本的问题 DesignSurface制作设计器遇到的问题 C# winform怎样打印Listview中的项? 开发一套用车系统的自动派车,思路理得不太清楚,请各位指点 如何用C#批量更改文件名? 高分求C#发送短信问题,解决问题一定给分!!!!请各位高手帮忙 C#里面的 用gridview怎样实现批量删除 C# 调用C++的DLL文件出现问题。尝试读取或写入受保护的内存。这通常指示其他内存已损坏。 请问引用参数有什么作用 文件打包成自解压文件怎么实现??? UDP连接到外网后,端口会经Nat转换,连接不同外网会有不同的值,导致p2p打洞失败。 请问怎么把两张图片合并为一张?
然后引用用下面的方法实现压缩和解压缩using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;namespace NetStars
{
public class ZipFiles
{ /// <summary>
/// 创建一个压缩文件
/// </summary>
/// <param name="zipFilename">压缩后的文件名</param>
/// <param name="sourceDirectory">待压缩文件的所在目录</param>
public static void PackFiles(string zipFilename, string sourceDirectory)
{
FastZip fz = new FastZip();
fz.CreateEmptyDirectories = true;
fz.CreateZip(zipFilename, @sourceDirectory, true, "");
fz = null;
} /// <summary>
/// 解压缩文件
/// </summary>
/// <param name="zipFile">待解压缩的文件</param>
/// <param name="directory">解压缩后文件存放的目录</param>
public static bool UnpackFiles(string zipFile, string directory)
{
if (!Directory.Exists(directory))
Directory.CreateDirectory(directory); ZipInputStream zis = new ZipInputStream(File.OpenRead(zipFile));
ZipEntry theEntry = null;
while ((theEntry = zis.GetNextEntry()) != null)
{
string directoryName = Path.GetDirectoryName(theEntry.Name);
string fileName = Path.GetFileName(theEntry.Name);
if (directoryName != string.Empty)
Directory.CreateDirectory(directory + directoryName); if (fileName != string.Empty)
{
FileStream streamWriter = File.Create(Path.Combine(directory, theEntry.Name));
int size = 2048;
byte[] data = new byte[size];
while (true)
{
size = zis.Read(data, 0, data.Length);
if (size > 0)
streamWriter.Write(data, 0, size);
else
break;
} streamWriter.Close();
}
} zis.Close();
return true;
} }
}
生成的压缩文件不能用winrar打开,郁闷