/// <summary>
/// 複制流
/// </summary>
/// <param name="input">原始流</param>
/// <param name="output">目标流</param>
public static void CopyStream(System.IO.Stream input, System.IO.Stream output)
{
byte[] buffer = new byte[2000];
int len;
while ((len = input.Read(buffer, 0, 2000)) > 0)
{
output.Write(buffer, 0, len);
}
output.Flush();
}
/// <summary>
/// 壓縮位元組數組
/// </summary>
/// <param name="sourceByte">需要被壓縮的位元組數組</param>
/// <returns>壓縮後的位元組數組</returns>
private static byte[] compressBytes(byte[] sourceByte)
{
MemoryStream inputStream = new MemoryStream(sourceByte);
Stream outStream = compressStream(inputStream);
byte[] outPutByteArray = new byte[outStream.Length];
outStream.Position = 0;
outStream.Read(outPutByteArray, 0, outPutByteArray.Length);
outStream.Close();
inputStream.Close();
return outPutByteArray;
}
/// <summary>
/// 解壓縮位元組數組
/// </summary>
/// <param name="sourceByte">需要被解壓縮的位元組數組</param>
/// <returns>解壓後的位元組數組</returns>
private static byte[] deCompressBytes(byte[] sourceByte)
{
MemoryStream inputStream = new MemoryStream(sourceByte);
Stream outputStream = deCompressStream(inputStream);
byte[] outputBytes = new byte[outputStream.Length];
outputStream.Position = 0;
outputStream.Read(outputBytes, 0, outputBytes.Length);
outputStream.Close();
inputStream.Close();
return outputBytes;
}
/// <summary>
/// 壓縮流
/// </summary>
/// <param name="sourceStream">需要被壓縮的流</param>
/// <returns>壓縮後的流</returns>
private static Stream compressStream(Stream sourceStream)
{
MemoryStream streamOut = new MemoryStream();
ZOutputStream streamZOut = new ZOutputStream(streamOut, zlibConst.Z_DEFAULT_COMPRESSION);
CopyStream(sourceStream, streamZOut);
streamZOut.finish();
return streamOut;
}
/// <summary>
/// 解壓縮流
/// </summary>
/// <param name="sourceStream">需要被解壓縮的流</param>
/// <returns>解壓後的流</returns>
private static Stream deCompressStream(Stream sourceStream)
{
MemoryStream outStream = new MemoryStream();
ZOutputStream outZStream = new ZOutputStream(outStream);
CopyStream(sourceStream, outZStream);
outZStream.finish();
return outStream;
}
zlib.NET庫下載下傳:http://www.componentace.com/zlib_.NET.htm
轉載于:https://www.cnblogs.com/kingBook/p/5970271.html