C# 解压与压缩文件

时间:2023-03-08 19:08:16

解压文件 ,引用 SharpZipLib.dll类库

方法一:

  public void UnGzipFile(string zipfilename)
{ //同压缩文件同级同名的非压缩文件路径
var path = zipfilename.Replace(Path.GetFileName(zipfilename), Path.GetFileNameWithoutExtension(zipfilename));
//创建压缩文件的输入流实例
using (GZipInputStream zipFile = new GZipInputStream(File.OpenRead(zipfilename)))
{
//创建目标文件的流
using (FileStream destFile = new FileStream(path, FileMode.Create))
{
int buffersize = ;//缓冲区的尺寸,一般是2048的倍数
byte[] FileData = new byte[buffersize];//创建缓冲数据
while (buffersize > )//一直读取到文件末尾
{
buffersize = zipFile.Read(FileData, , buffersize);//读取压缩文件数据
destFile.Write(FileData, , buffersize);//写入目标文件
}
destFile.Flush();
}
}
}

方法二:

        /// <summary>
/// 引用 SharpZipLib.dll
/// </summary>
/// <param name="zipFilePath">压缩文件</param>
/// <param name="filePath">解压文件</param>
public void gunZipFile(string zipFilePath, string filePath)
{
using (Stream inStream = new GZipInputStream(File.OpenRead(zipFilePath)))
{
using (FileStream outStream = new FileStream(filePath, FileMode.Create))
{
byte[] buf = new byte[];
StreamUtils.Copy(inStream, outStream, buf);
}
}
}

压缩

        /// <summary>
/// 压缩文件
/// </summary>
/// <param name="filePath">文件路径</param>
/// <param name="zipFilePath">压缩后的文件路径</param>
public static void gZipFile(string filePath, string zipFilePath)
{
Stream s = new GZipOutputStream(File.Create(zipFilePath));
FileStream fs = File.OpenRead(filePath);
int size;
byte[] buf = new byte[];
do
{
size = fs.Read(buf, , buf.Length);
s.Write(buf, , size);
} while (size > );
s.Close();
fs.Close();
}

文章来源:http://walkerqt.blog.51cto.com/1310630/1706239