我用C#写的类库里要调用自动解压程序。在使用ICSharpCode提供的方法时(如下),执行“while ((theEntry = fileStream.GetNextEntry()) != null) ”时总是报错“Wrong Local header signature: 0x274CEFB0”。。不知是什么原因请问各位老大是怎样来解压缩文件。(ZIP或RAR)文件就行using System;
using System.IO;
using System.Web;
using System.Web.UI;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.GZip;
using ICSharpCode.SharpZipLib.Checksums; /// <summary>
/// 压缩文件与解压缩的实现类
/// </summary>
public class WebCommpress
{
#region 解压缩文件
/// <summary>
/// 解压缩文件
/// </summary>
/// <param name="file">需要解压缩的文件全名</param>
/// <param name="dir">解压到的目录,形式为@"c:\hello\"</param>
public bool UnzipFile(string sourceFullFile, string tarDir)
{
ZipInputStream fileStream = new ZipInputStream(File.OpenRead(sourceFullFile)); try
{
if (!Directory.Exists(tarDir))
Directory.CreateDirectory(tarDir); ZipEntry theEntry;
string dirName = "";
string fileName = "";
int size = 2048; while ((theEntry = fileStream.GetNextEntry()) != null)
{
dirName = Path.GetDirectoryName(theEntry.Name);
fileName = Path.GetFileName(theEntry.Name); if (dirName != String.Empty && !Directory.Exists(dirName))
Directory.CreateDirectory(tarDir + dirName); if (fileName != String.Empty)
{
FileStream streamWriter = File.Create(tarDir + theEntry.Name); byte[] data = new byte[size];
while (true)
{
size = fileStream.Read(data, 0, data.Length);
if (size > 0)
{
streamWriter.Write(data, 0, size);
}
else
{
break;
}
} streamWriter.Close();
}
} fileStream.Close();
}
catch (Exception exx)
{
string strExx = exx.ToString();
return false;
}
finally
{
fileStream.Close();
} return true;
}
}
using System.IO;
using System.Web;
using System.Web.UI;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.GZip;
using ICSharpCode.SharpZipLib.Checksums; /// <summary>
/// 压缩文件与解压缩的实现类
/// </summary>
public class WebCommpress
{
#region 解压缩文件
/// <summary>
/// 解压缩文件
/// </summary>
/// <param name="file">需要解压缩的文件全名</param>
/// <param name="dir">解压到的目录,形式为@"c:\hello\"</param>
public bool UnzipFile(string sourceFullFile, string tarDir)
{
ZipInputStream fileStream = new ZipInputStream(File.OpenRead(sourceFullFile)); try
{
if (!Directory.Exists(tarDir))
Directory.CreateDirectory(tarDir); ZipEntry theEntry;
string dirName = "";
string fileName = "";
int size = 2048; while ((theEntry = fileStream.GetNextEntry()) != null)
{
dirName = Path.GetDirectoryName(theEntry.Name);
fileName = Path.GetFileName(theEntry.Name); if (dirName != String.Empty && !Directory.Exists(dirName))
Directory.CreateDirectory(tarDir + dirName); if (fileName != String.Empty)
{
FileStream streamWriter = File.Create(tarDir + theEntry.Name); byte[] data = new byte[size];
while (true)
{
size = fileStream.Read(data, 0, data.Length);
if (size > 0)
{
streamWriter.Write(data, 0, size);
}
else
{
break;
}
} streamWriter.Close();
}
} fileStream.Close();
}
catch (Exception exx)
{
string strExx = exx.ToString();
return false;
}
finally
{
fileStream.Close();
} return true;
}
}
解决方案 »
- MagicAjax 在.NET 4.0 能不能用啊
- asp.net如何形成word形式下载
- 一个“Div”放在“aspx”页面中
- sql插入数据发生错误后如何继续执行
- 为什么我用showModalDialog弹出的模式窗口也会被IE拦截?
- 在数据绑定前 动态设置datagrid中控件的属性值!!!!!!!!!!!!!!????
- 请教版主:如何在C#里用键盘CTRL+ENTER触发一个按钮的事件
- javascript的window.open不能用
- 各路高手,请问在asp.net中怎么操作word,需要在客户端调用word,还有在word中修改了文档之后能保存加数据库。
- 怎样将这段代码进行下去?!
- 怎么使用asp.net2中formview一条一条的显示、编辑、修改、删除数据?
- 如何访问自定义控件中声明的变量?
我用的也是这种方法,但在执行“while ((theEntry = fileStream.GetNextEntry()) !=
null) ”时总是报错“Wrong Local header signature: 0x274CEFB0”。。
不知是什么原因,怎么解决??