我是用的sharpziplib的压缩方法,但是压缩后 系统自带的ziped提取不出文件,也不报错,显示为空,也不知道是不是哪里写错了。但是用winrar和其他的7-zip等都可以。
尝试用.net自带的IO.Compression,但是好像只能压缩单个文件。。
谁知道怎么搞?下面是我的压缩方法:
/// <summary>
/// 使用isharpziplib压缩文件
/// </summary>
/// <param name="rootDir">需要打包文件的顶级目录(结尾不含//)</param>
/// <param name="fileList">打包的文件(夹)的全路径列表</param>
/// <param name="filePath">目标压缩文件</param>
/// <returns></returns>
public static void CompressFile(string topDirName, List<string> fileNamesToZip, string ZipedFileName)
{
List<string> fileList = new List<string>();
foreach (string ss in fileNamesToZip)
{
string filename = ss.Replace(topDirName, "");
if (FileHelper.IsDir(ss))
{
fileList.AddRange(GetFileAndDir(ss, topDirName));
}
else
{
fileList.Add(filename);
}
}
using (ZipOutputStream s = new ZipOutputStream(System.IO.File.Open(ZipedFileName, FileMode.Create)))
{
s.SetLevel(6);
foreach (string file in fileList)
{
if (FileHelper.IsDir(topDirName + file)) //如果是文件夹 folder
{
ZipEntry entry = new ZipEntry(file + "\\");
entry.DateTime = DateTime.Now;
s.PutNextEntry(entry);
}
else //文件
{
using (FileStream fs = File.OpenRead(topDirName + file)) //打开待压缩文件
{
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length); //读取文件流
ZipEntry entry = new ZipEntry(file); //新建实例
entry.DateTime = DateTime.Now;
entry.Size = fs.Length;
fs.Close();
s.PutNextEntry(entry);
s.Write(buffer, 0, buffer.Length);
}
}
}
}
}压缩
尝试用.net自带的IO.Compression,但是好像只能压缩单个文件。。
谁知道怎么搞?下面是我的压缩方法:
/// <summary>
/// 使用isharpziplib压缩文件
/// </summary>
/// <param name="rootDir">需要打包文件的顶级目录(结尾不含//)</param>
/// <param name="fileList">打包的文件(夹)的全路径列表</param>
/// <param name="filePath">目标压缩文件</param>
/// <returns></returns>
public static void CompressFile(string topDirName, List<string> fileNamesToZip, string ZipedFileName)
{
List<string> fileList = new List<string>();
foreach (string ss in fileNamesToZip)
{
string filename = ss.Replace(topDirName, "");
if (FileHelper.IsDir(ss))
{
fileList.AddRange(GetFileAndDir(ss, topDirName));
}
else
{
fileList.Add(filename);
}
}
using (ZipOutputStream s = new ZipOutputStream(System.IO.File.Open(ZipedFileName, FileMode.Create)))
{
s.SetLevel(6);
foreach (string file in fileList)
{
if (FileHelper.IsDir(topDirName + file)) //如果是文件夹 folder
{
ZipEntry entry = new ZipEntry(file + "\\");
entry.DateTime = DateTime.Now;
s.PutNextEntry(entry);
}
else //文件
{
using (FileStream fs = File.OpenRead(topDirName + file)) //打开待压缩文件
{
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length); //读取文件流
ZipEntry entry = new ZipEntry(file); //新建实例
entry.DateTime = DateTime.Now;
entry.Size = fs.Length;
fs.Close();
s.PutNextEntry(entry);
s.Write(buffer, 0, buffer.Length);
}
}
}
}
}压缩
解决方案 »
- 将截断字符串或二进制数据。语句已终止!急求答案!
- 关于C#.NET中checklistBox多项取值的问题
- select 查找特别简单
- C#里面什么泛型类型和c++的Set一样?
- 如何把CharArray里的元素转换成char类型(初学者~遇到困难了)
- 请高手看下这段代码哪里有错啊!!并请给出修改代码 谢谢了
- 请问在微软报表ReportViewer中,数据如何动态绑定
- 需要C#创建一个动态TREEVIEW,想要数据库设计方案及代码的实现!请高手指教!
- 有没有办法在一个小窗口中浏览网页..
- 命令模式的命令实体若有不同参数和返回值应怎么做?
- WINFORM 里 listview中 listviewitem 图标的对象是什么?
- 输出字符串保存的值的值
我一直用这个压缩和解压,压缩包能用winrar等工具解压
算了。 直接用winrar.exe+参数搞了。