本人小鸟一只,请各位大神帮忙看下
using System.IO;
using System.Text;
using System.Xml;using System.Diagnostics;
using System.Runtime.Serialization.Formatters.Binary;
using ICSharpCode.SharpZipLib.BZip2;
using ICSharpCode.SharpZipLib.Zip;
using ICSharpCode.SharpZipLib.Zip.Compression;
using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
using ICSharpCode.SharpZipLib.GZip; /// ;summary; 
/// 解压缩一个 zip 文件。 
/// ;/summary; 
/// ;param name="zipFileName";要解压的 zip 文件。;/param; 
/// ;param name="extractLocation";zip 文件的解压目录。;/param; 
/// ;param name="password";zip 文件的密码。;/param; 
/// ;param name="overWrite";是否覆盖已存在的文件。;/param; 
public void UnZipDir(string zipFileName, string extractLocation, string password, bool overWrite) 

#region 实现 
string myExtractLocation = extractLocation; 
if (myExtractLocation == "") 
myExtractLocation = Directory.GetCurrentDirectory(); 
if (!myExtractLocation.EndsWith(@"\")) 
myExtractLocation = myExtractLocation + @"\"; 
ZipInputStream s = new ZipInputStream(File.OpenRead(zipFileName)); 
s.Password = password; 
ZipEntry theEntry; 
while ((theEntry = s.GetNextEntry()) != null) 

string directoryName = ""; 
string pathToZip = ""; 
pathToZip = theEntry.Name;  if (pathToZip != "") 
directoryName = Path.GetDirectoryName(pathToZip) + @"\"; 
string fileName = Path.GetFileName(pathToZip); 
Directory.CreateDirectory(myExtractLocation); 
if (fileName != "") 

try 

if ((File.Exists(myExtractLocation + directoryName + fileName) && overWrite) || (!File.Exists(myExtractLocation + directoryName + fileName))) 

FileStream streamWriter = File.Create(myExtractLocation + fileName); 
int size = 2048; 
byte[] data = new byte[2048]; 
while ( true) 

size = s.Read(data, 0, data.Length); 
if (size > 0) 
{
streamWriter.Write(data, 0, size); 
}
else 
break; 

streamWriter.Close(); 


catch(ZipException ex) 

FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "log.txt", FileMode.OpenOrCreate, FileAccess.Write); 
StreamWriter sw = new StreamWriter(fs); 
sw.WriteLine(ex.Message); 



s.Close(); 
#endregion 
}这段代码是从网上找到的,自己使用时,当size的值小于2048时,再运行size = s.Read(data, 0, data.Length);就出错了
catch中的ZipExcetion为 "Size mismatch: 4294967295;1343 <-> 393;1343",根本看不懂...还请有经验的大神们指点下