Dav*_*son 27
.Net 2.0框架命名空间System.IO.Compression
支持GZip和Deflate算法.以下是压缩和解压缩可从文件对象获取的字节流的两种方法.你可以替补多GZipStream
为DefaultStream
在下面的方法使用该算法.这仍然存在处理使用不同算法压缩的文件的问题.
public static byte[] Compress(byte[] data)
{
MemoryStream output = new MemoryStream();
GZipStream gzip = new GZipStream(output, CompressionMode.Compress, true);
gzip.Write(data, 0, data.Length);
gzip.Close();
return output.ToArray();
}
public static byte[] Decompress(byte[] data)
{
MemoryStream input = new MemoryStream();
input.Write(data, 0, data.Length);
input.Position = 0;
GZipStream gzip = new GZipStream(input, CompressionMode.Decompress, true);
MemoryStream output = new MemoryStream();
byte[] buff = new byte[64];
int read = -1;
read = gzip.Read(buff, 0, buff.Length);
while (read > 0)
{
output.Write(buff, 0, read);
read = gzip.Read(buff, 0, buff.Length);
}
gzip.Close();
return output.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
小智 9
Tom指出,您可以使用SharpZip等第三方库.
另一种方式(没有第三方)是使用Windows Shell API.您需要在C#项目中设置对Microsoft Shell控件和自动化COM库的引用.Gerald Gibson有一个例子:
http://geraldgibson.net/dnn/Home/CZipFileCompression/tabid/148/Default.aspx
这在java中很容易实现,如上所述,您可以从C#进入java.util.zip库.有关参考,请参阅
我刚才用这个来做一个文件夹结构的深度(递归)拉链,但我不认为我曾经使用过解压缩.如果我很有动力,我可以将代码拉出来并稍后编辑到这里.
归档时间: |
|
查看次数: |
3350 次 |
最近记录: |