#region 加压解压方法
///
<summary>
///
功能:压缩文件(暂时只压缩文件夹下一级目录中的文件,文件夹及其子级被忽略)
///
</summary>
/// <param
name="dirPath">被压缩的文件夹夹路径</param>
/// <param
name="pathzip">生成压缩文件的路径,为空则默认与被压缩文件夹同一级目录,名称为:文件夹名+.zip</param>
/// <param
name="err">出错信息</param>
///
<returns>是否压缩成功</returns>
public static bool
ZipFiles(string dirPath,string pathzip,out string err)
{
err = "";
try
{
//要压缩的文件名
string[]
filenames = Directory.GetFiles(dirPath);
using
(ZipOutputStream s = new
ZipOutputStream(File.Create(pathzip)))
{
s.SetLevel(9);
byte[] buffer;
foreach (string file in
filenames)
{
ZipEntry entry = new
ZipEntry(Path.GetFileName(file));
buffer = new byte[file.Length];
entry.DateTime = DateTime.Now;
s.PutNextEntry(entry);
using (FileStream fs = File.OpenRead(file))
{
int
sourceBytes;
do
{
sourceBytes = fs.Read(buffer,
0, buffer.Length);
s.Write(buffer, 0,
sourceBytes);
} while
(sourceBytes > 0);
}
}
s.Finish();
s.Close();
}
}
catch (Exception ex)
{
err =
ex.Message;
return
false;
}
return true;
}
///
<summary>
///
功能:解压zip格式的文件。
///
</summary>
/// <param
name="zipFilePath">压缩文件路径</param>
/// <param
name="unZipDir">解压文件存放路径,为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹</param>
/// <param
name="err">出错信息</param>
///
<returns>解压是否成功</returns>
public bool UnZipFile(string
zipFilePath, string unZipDir, out string err)
{
err = "";
if (zipFilePath == string.Empty)
{
err =
"压缩文件不能为空!";
return
false;
}
if (!File.Exists(zipFilePath))
{
err =
"压缩文件不存在!";
return
false;
}
//解压文件夹为空时默认与压缩文件同一级目录下,跟压缩文件同名的文件夹
if (unZipDir == string.Empty)
unZipDir =
zipFilePath.Replace(Path.GetFileName(zipFilePath),
Path.GetFileNameWithoutExtension(zipFilePath));
if (!unZipDir.EndsWith("\"))
unZipDir +=
"\";
if (!Directory.Exists(unZipDir))
Directory.CreateDirectory(unZipDir);
try
{
using
(ZipInputStream s = new
ZipInputStream(File.OpenRead(zipFilePath)))
{
ZipEntry theEntry;
while ((theEntry =
s.GetNextEntry()) != null)
{
string directoryName =
Path.GetDirectoryName(theEntry.Name);
string fileName =
Path.GetFileName(theEntry.Name);
if (directoryName.Length >
0)
{
Directory.CreateDirectory(unZipDir +
directoryName);
}
if (!directoryName.EndsWith("\"))
directoryName += "\";
if (fileName != String.Empty)
{
using
(FileStream streamWriter = File.Create(unZipDir +
theEntry.Name))
{
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;
}
}
}
}
}//while
}
}
catch (Exception ex)
{
err =
ex.Message;
return
false;
}
return true;
}//解压结束
#endregion