C# 文件流压缩解压
2023-09-14 09:02:10 时间
byte[] array = ZipHelper.StreamToBytes(stream);
byte[] array2 = new byte[array.Length];
Deflater deflater = new Deflater();
deflater.SetLevel(level);
deflater.SetStrategy(DeflateStrategy.Default);
deflater.SetInput(array);
deflater.Finish();
int num = deflater.Deflate(array2);
byte[] array3 = new byte[num];
Array.Copy(array2, array3, num);
return ZipHelper.BytesToStream(array3);
/// summary
/// Deflate方式压缩
/// /summary
/// param name="input" /param
/// param name="level" 压缩品质级别(0~9) /param
/// returns /returns
public static byte[] Deflate(byte[] input, int level)
byte[] result;
if (input == null input.Length == 0)
result = new byte[0];
else
byte[] array = new byte[input.Length];
Deflater deflater = new Deflater();
deflater.SetLevel(level);
deflater.SetStrategy(DeflateStrategy.Default);
deflater.SetInput(input);
deflater.Finish();
int num = deflater.Deflate(array);
byte[] array2 = new byte[num];
Array.Copy(array, array2, num);
result = array2;
catch (Exception innerException)
throw new Exception("压缩程序出错!", innerException);
return result;
#endregion
#region Inflate解压
/// summary
/// Inflate解压
/// /summary
/// param name="input" /param
/// returns /returns
public static byte[] Inflate(byte[] input)
byte[] result;
if (input == null input.Length == 0)
result = new byte[0];
else
Inflater inflater = new Inflater();
inflater.SetInput(input);
byte[] array = new byte[1024];
using (MemoryStream memoryStream = new MemoryStream())
for (int i = inflater.Inflate(array, 0, array.Length); i i = inflater.Inflate(array, 0, array.Length))
memoryStream.Write(array, 0, i);
byte[] buffer = memoryStream.GetBuffer();
memoryStream.Close();
result = buffer;
catch (Exception innerException)
throw new Exception("解压缩程序出错!", innerException);
return result;
/// summary
/// Inflate解压
/// /summary
/// param name="zipStream" /param
/// returns /returns
public static Stream Inflate(Stream zipStream)
byte[] input = ZipHelper.StreamToBytes(zipStream);
byte[] bytes = ZipHelper.Inflate(input);
return ZipHelper.BytesToStream(bytes);
#endregion
#endregion
#region GZip压缩
/// summary
/// GZip压缩
/// /summary
/// param name="srcStream" /param
/// param name="output" /param
public static void GZipCompress(Stream srcStream, Stream output)
ZipHelper.GZipCompress(srcStream, 6, output);
/// summary
/// GZip压缩
/// /summary
/// param name="srcStream" /param
/// param name="compressLevel" 压缩品质级别(0~9) /param
/// param name="output" /param
public static void GZipCompress(Stream srcStream, int compressLevel, Stream output)
if (compressLevel 1 || compressLevel 9)
throw new Exception(string.Format("您指定的压缩级别 {0} 不在有效的范围(1-9)内", compressLevel));
srcStream.Position = 0L;
GZipOutputStream gZipOutputStream = new GZipOutputStream(output);
gZipOutputStream.SetLevel(compressLevel);
int i = 4096;
byte[] buffer = new byte[i];
while (i 0)
i = srcStream.Read(buffer, 0, i);
gZipOutputStream.Write(buffer, 0, i);
catch (Exception ex)
throw new Exception("GZip压缩出错:" + ex.Message);
srcStream.Close();
gZipOutputStream.Finish();
/// summary
/// GZip解压
/// /summary
/// param name="zipStream" /param
/// param name="outputStream" /param
public static void GZipDeCompress(Stream zipStream, Stream outputStream)
GZipInputStream gZipInputStream = new GZipInputStream(zipStream);
int i = 4096;
byte[] buffer = new byte[i];
while (i 0)
i = gZipInputStream.Read(buffer, 0, i);
outputStream.Write(buffer, 0, i);
catch (Exception ex)
throw new Exception("GZip解压缩出错:" + ex.Message);
zipStream.Close();
gZipInputStream.Close();
#endregion
#region BZip2压缩
/// summary
/// BZip2压缩
/// /summary
/// param name="inStream" /param
/// param name="outStream" /param
/// param name="blockSize" /param
public static void BZip2Compress(Stream inStream, Stream outStream, int blockSize)
BZip2.Compress(inStream, outStream, blockSize);
/// summary
/// BZip2解压
/// /summary
/// param name="inStream" /param
/// param name="outStream" /param
public static void BZip2Decompress(Stream inStream, Stream outStream)
BZip2.Decompress(inStream, outStream);
#endregion
stream.Seek(0L, SeekOrigin.Begin); FileStream fileStream = new FileStream(fileName, FileMode.Create); BinaryWriter binaryWriter = new BinaryWriter(fileStream); binaryWriter.Write(array); binaryWriter.Close(); fileStream.Close(); private static Stream FileToStream(string fileName) FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); byte[] array = new byte[fileStream.Length]; fileStream.Read(array, 0, array.Length); fileStream.Close(); return new MemoryStream(array); }
C++文件读写操作分析文本文件与二进制文件 文本文件 写文件步骤如下: 1. 包含头文件 #include fstream 2. 创建流对象 ofstream ofs; 3. 打开文件 ofs.open( 文件路径 ,打开方式); 4. 写数据 ofs 写入的数据 5. 关闭文件 ofs.close(); 文件打开方式: ios::in 为读文件而打开文件 ios::out 为写文件而打开文件 ios::ate 初始位置:文件尾 ios::app 追加方式写文件 ios::trunc 如果文件存在先删除,再创建 ios::binary 二进制方式
文件处理 文件操作三步: 打开文件 open() 读取/写入 read()/write() 默认打开文件是只读模式。如: file=open( /etc/hosts ) data=file.read() file.
stream.Seek(0L, SeekOrigin.Begin); FileStream fileStream = new FileStream(fileName, FileMode.Create); BinaryWriter binaryWriter = new BinaryWriter(fileStream); binaryWriter.Write(array); binaryWriter.Close(); fileStream.Close(); private static Stream FileToStream(string fileName) FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); byte[] array = new byte[fileStream.Length]; fileStream.Read(array, 0, array.Length); fileStream.Close(); return new MemoryStream(array); }
C++文件读写操作分析文本文件与二进制文件 文本文件 写文件步骤如下: 1. 包含头文件 #include fstream 2. 创建流对象 ofstream ofs; 3. 打开文件 ofs.open( 文件路径 ,打开方式); 4. 写数据 ofs 写入的数据 5. 关闭文件 ofs.close(); 文件打开方式: ios::in 为读文件而打开文件 ios::out 为写文件而打开文件 ios::ate 初始位置:文件尾 ios::app 追加方式写文件 ios::trunc 如果文件存在先删除,再创建 ios::binary 二进制方式
文件处理 文件操作三步: 打开文件 open() 读取/写入 read()/write() 默认打开文件是只读模式。如: file=open( /etc/hosts ) data=file.read() file.
相关文章
- C# 读写 Photoshop PSD文件 操作类「建议收藏」
- C#验证码的实现_验证码怎么实现
- C# UDP编程「建议收藏」
- 【愚公系列】2023年02月 .NET/C#知识点-.NET Core配置文件详解
- C# 实现QQ群成员列表导出及邮件群发之模拟QQ登陆
- C#实现图片分割方法与代码
- C#位运算符整理
- c#调用.bat文件的实现代码
- C#中HTML字符转换函数分享
- C#下载文件(TransmitFile/WriteFile/流方式)实例介绍
- C#实现简单打印的实例代码
- C#连接MySql数据库的方法
- c#使用DotNetZip封装类操作zip文件(创建/读取/更新)实例
- c#唯一值渲染实例代码
- c#连接access数据库操作类分享
- c#生成随机数示例分享
- C#获取图片文件扩展名的方法
- C#运用FileInfo类实现拷贝文件的方法
- C#文件管理类Directory实例分析
- 基于私钥加密公钥解密的RSA算法C#实现方法
- C#泛型Dictionary的用法实例详解