使用Deflate算法對文件進(jìn)行壓縮與解壓縮的方法詳解
更新時(shí)間:2013年06月09日 09:01:01 作者:
本篇文章是對使用Deflate算法對文件進(jìn)行壓縮和解壓縮的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
如下所示:
static void Main()
{
string path = @"D:\Practise\IO\Compress";
string deCompressPath = @"D:\Practise\IO\DeCompress";
DirectoryInfo dir = new DirectoryInfo(path);
foreach (FileInfo fi in dir.GetFiles())
{
Compress(fi);
}
foreach (FileInfo fi in dir.GetFiles("*.cmp"))
{
DeCompress(fi, deCompressPath);
}
}
public static void Compress(FileInfo fi)
{
using (FileStream fs = fi.OpenRead())
{
if (fi.Attributes != FileAttributes.Hidden & fi.Extension != ".cmp")
{
using (FileStream compressfile = new FileStream(fi.FullName + ".cmp", FileMode.Create, FileAccess.ReadWrite))
{
using (DeflateStream ds = new DeflateStream(compressfile, CompressionMode.Compress))
{
fs.CopyTo(ds);
Console.WriteLine("This File {0} has been Compressed to {1}",fi.Name,compressfile.Name);
}
}
}
}
}
public static void DeCompress(FileInfo fi, string desination)
{
using (FileStream fs = fi.OpenRead())
{
string deCompressFile = fi.Name.Remove(fi.Name.Length - fi.Extension.Length);
using (FileStream deCompressFS = new FileStream(Path.Combine(desination, deCompressFile), FileMode.Create, FileAccess.ReadWrite))
{
using (DeflateStream ds = new DeflateStream(fs, CompressionMode.Decompress))
{
ds.CopyTo(deCompressFS);
Console.WriteLine("This file {0} has been Decompressd", fi.Name);
}
}
}
}
復(fù)制代碼 代碼如下:
static void Main()
{
string path = @"D:\Practise\IO\Compress";
string deCompressPath = @"D:\Practise\IO\DeCompress";
DirectoryInfo dir = new DirectoryInfo(path);
foreach (FileInfo fi in dir.GetFiles())
{
Compress(fi);
}
foreach (FileInfo fi in dir.GetFiles("*.cmp"))
{
DeCompress(fi, deCompressPath);
}
}
public static void Compress(FileInfo fi)
{
using (FileStream fs = fi.OpenRead())
{
if (fi.Attributes != FileAttributes.Hidden & fi.Extension != ".cmp")
{
using (FileStream compressfile = new FileStream(fi.FullName + ".cmp", FileMode.Create, FileAccess.ReadWrite))
{
using (DeflateStream ds = new DeflateStream(compressfile, CompressionMode.Compress))
{
fs.CopyTo(ds);
Console.WriteLine("This File {0} has been Compressed to {1}",fi.Name,compressfile.Name);
}
}
}
}
}
public static void DeCompress(FileInfo fi, string desination)
{
using (FileStream fs = fi.OpenRead())
{
string deCompressFile = fi.Name.Remove(fi.Name.Length - fi.Extension.Length);
using (FileStream deCompressFS = new FileStream(Path.Combine(desination, deCompressFile), FileMode.Create, FileAccess.ReadWrite))
{
using (DeflateStream ds = new DeflateStream(fs, CompressionMode.Decompress))
{
ds.CopyTo(deCompressFS);
Console.WriteLine("This file {0} has been Decompressd", fi.Name);
}
}
}
}
相關(guān)文章
C# 中 Array和 ArrayList詳解及區(qū)別
這篇文章主要介紹了C# 中 Array和 ArrayList詳解及區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-01-01C#實(shí)現(xiàn)將PDF轉(zhuǎn)為線性化PDF
線性化PDF文件是PDF文件的一種特殊格式,可以通過Internet更快地進(jìn)行查看。這篇文章主要介紹了如何通過C#實(shí)現(xiàn)將PDF轉(zhuǎn)為線性化PDF,感興趣的小伙伴可以學(xué)習(xí)一下2021-12-12WPF調(diào)用ffmpeg實(shí)現(xiàn)屏幕錄制
這篇文章主要為大家詳細(xì)介紹了WPF如何調(diào)用ffmpeg實(shí)現(xiàn)屏幕錄制,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下2023-05-05