c# gzip解压缩
- //引用
- using System.IO.Compression;
- //解压缩类
- GZipStream
- //解压缩实例
- ......
- HttpWebResponse httpRequest = (HttpWebResponse)httpLogin.GetResponse();
- Stream HttpResStream= httpRequest.GetResponseStream();
- GZipStream gzip = new GZipStream(HttpResStream, CompressionMode.Decompress) ;
- //对解压缩后的字符串信息解析
- while ((len = gzip.Read(bytes, , bytes.Length)) > )
- {
- line = System.Text.Encoding.Default.GetString(bytes);
- } http://msdn.microsoft.com/zh-cn/library/system.io.compression.gzipstream(v=vs.80).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1 using System;
- using System.IO;
- using System.IO.Compression;
- public class GZipTest
- {
- public static int ReadAllBytesFromStream(Stream stream, byte[] buffer)
- {
- // Use this method is used to read all bytes from a stream.
- int offset = ;
- int totalCount = ;
- while (true)
- {
- int bytesRead = stream.Read(buffer, offset, );
- if ( bytesRead == )
- {
- break;
- }
- offset += bytesRead;
- totalCount += bytesRead;
- }
- return totalCount;
- }
- public static bool CompareData(byte[] buf1, int len1, byte[] buf2, int len2)
- {
- // Use this method to compare data from two different buffers.
- if (len1 != len2)
- {
- Console.WriteLine("Number of bytes in two buffer are different {0}:{1}", len1, len2);
- return false;
- }
- for ( int i= ; i< len1; i++)
- {
- if ( buf1[i] != buf2[i])
- {
- Console.WriteLine("byte {0} is different {1}|{2}", i, buf1[i], buf2[i]);
- return false;
- }
- }
- Console.WriteLine("All bytes compare.");
- return true;
- }
- public static void GZipCompressDecompress(string filename)
- {
- Console.WriteLine("Test compression and decompression on file {0}", filename);
- FileStream infile;
- try
- {
- // Open the file as a FileStream object.
- infile = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
- byte[] buffer = new byte[infile.Length];
- // Read the file to ensure it is readable.
- int count = infile.Read(buffer, , buffer.Length);
- if ( count != buffer.Length)
- {
- infile.Close();
- Console.WriteLine("Test Failed: Unable to read data from file");
- return;
- }
- infile.Close();
- MemoryStream ms = new MemoryStream();
- // Use the newly created memory stream for the compressed data.
- GZipStream compressedzipStream = new GZipStream(ms , CompressionMode.Compress, true);
- Console.WriteLine("Compression");
- compressedzipStream.Write(buffer, , buffer.Length);
- // Close the stream.
- compressedzipStream.Close();
- Console.WriteLine("Original size: {0}, Compressed size: {1}", buffer.Length, ms.Length);
- // Reset the memory stream position to begin decompression.
- ms.Position = ;
- GZipStream zipStream = new GZipStream(ms, CompressionMode.Decompress);
- Console.WriteLine("Decompression");
- byte[] decompressedBuffer = new byte[buffer.Length + ];
- // Use the ReadAllBytesFromStream to read the stream.
- int totalCount = GZipTest.ReadAllBytesFromStream(zipStream, decompressedBuffer);
- Console.WriteLine("Decompressed {0} bytes", totalCount);
- if( !GZipTest.CompareData(buffer, buffer.Length, decompressedBuffer, totalCount) )
- {
- Console.WriteLine("Error. The two buffers did not compare.");
- }
- zipStream.Close();
- } // end try
- catch (InvalidDataException)
- {
- Console.WriteLine("Error: The file being read contains invalid data.");
- }
- catch (FileNotFoundException)
- {
- Console.WriteLine("Error:The file specified was not found.");
- }
- catch (ArgumentException)
- {
- Console.WriteLine("Error: path is a zero-length string, contains only white space, or contains one or more invalid characters");
- }
- catch (PathTooLongException)
- {
- Console.WriteLine("Error: The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based platforms, paths must be less than 248 characters, and file names must be less than 260 characters.");
- }
- catch (DirectoryNotFoundException)
- {
- Console.WriteLine("Error: The specified path is invalid, such as being on an unmapped drive.");
- }
- catch (IOException)
- {
- Console.WriteLine("Error: An I/O error occurred while opening the file.");
- }
- catch (UnauthorizedAccessException)
- {
- Console.WriteLine("Error: path specified a file that is read-only, the path is a directory, or caller does not have the required permissions.");
- }
- catch (IndexOutOfRangeException)
- {
- Console.WriteLine("Error: You must provide parameters for MyGZIP.");
- }
- }
- public static void Main(string[] args)
- {
- string usageText = "Usage: MYGZIP <inputfilename>";
- //If no file name is specified, write usage text.
- if (args.Length == )
- {
- Console.WriteLine(usageText);
- }
- else
- {
- if (File.Exists(args[]))
- GZipCompressDecompress(args[]);
- }
- }
- }
c# gzip解压缩的更多相关文章
- Windows API方式直接调用C#的DLL,支持多音字转拼音、Gzip解压缩、公式计算(VBA、C++、VB、Delphi甚至java都可以)
原始链接 https://www.cnblogs.com/Charltsing/p/DllExport.html 这两年,我在VBA应用方面一直有几大痛点:1.多音字转拼音:2.64位下的GZIP解压 ...
- VB6之借助zlib实现gzip解压缩
这是个简版的,可以拿来做下网页gzip的解压缩,整好我的webserver还不支持这个,有时间了就加上. zlib.dll下载请点击我! 模块zlib.bas的代码如下: 'code by lichm ...
- http gzip 解压缩
var sContentEncoding = httpRespone.Headers["Content-Encoding"]; if(sContentEncoding == &qu ...
- c语言使用zlib实现文本字符的gzip压缩与gzip解压缩
网络上找到的好多方法在解压缩字符串的时候会丢失字符,这里是解决方法: http://stackoverflow.com/questions/21186535/compressing-decompres ...
- AXIS2调用web service,返回结果用GZIP解压缩
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...
- C#使用Gzip解压缩完整读取网页内容
using System; using System.Threading; using System.Text; using System.Text.RegularExpressions; using ...
- 对数据进行GZIP压缩或解压缩
/** * 对data进行GZIP解压缩 * @param data * @return * @throws Exception */ public static String unCompress( ...
- java GZIP压缩与解压缩
1.GZIP压缩 public static byte[] compress(String str, String encoding) { if (str == null || str.length( ...
- AIX 文件 打包 与 压缩 tar gzip compress 的使用
今天在Aix用tar -cvf 备份,打成tar包,占有硬盘空间过大,没有压缩比, 尝试使用tar -zcvf linux系统下可以用-z 命令 (z 用gzip来压缩/解压缩文件,加上该选项后可以 ...
随机推荐
- js数组&&字符串&&定时器2
一.系统时间对象Date 方法 描述 Date() 返回当日的日期和时间. getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31). getDay() 从 Date 对象返回一周 ...
- Git之路--2
- Git 常用配置和使用
Git:是一个分布式的源代码管理工具,Linux内核的代码就是用Git管理的所以它很强,也很快, 和 Vss/SVN比起来 本地Git初始化配置及其使用: 1. 初始化本地Git库:打开Git Bas ...
- mysql insert语句错误问题解决
好久没有复习数据库了,竟然忘记了mysql中的关键字(保留字),导致今天一晚上都在查找sql语句错误,特此记录此错误,教训啊. 我在mysql数据库中有一个名为order 的表,啊啊啊啊啊,为啥我给他 ...
- 20151217jqueryUI学习笔记
工具提示(tooltip),是一个非常实用的 UI.它彻底扩展了 HTML 中的 title 属性,让提示更加丰富,更加可控制,全面提升了用户体验.一. 调用 tooltip()方法在调用 toolt ...
- 在 ServiceModel 客户端配置部分中,找不到引用协定“PmWs.PmWebServiceSoap”的默认终结点元素
System.Exception: ConfigManager.LoadConfigurationFromDb ServiceFactory.GetPmWebService 在 ServiceMode ...
- spring定时任务的配置
定时任务配置分为三个步骤: 1.定义任务 2.任务执行策略配置 3.启动任务 1.定义任务 <!--要定时执行的方法--> <bean id="testTaskJob&qu ...
- jsp文件怎么打开呢
jsp是一种嵌入式网页脚本,正常情况下可以用记事本等文本工具直接打开,也可用DREAMWEAVER等网页设计工具友好编辑.不过这样只能看到程序的源代码.当然,我们也可以用IE等浏览器直接打开浏览,前提 ...
- iOS开发——免证书调试(Xcode7,iOS9)
(资料已做好,待整理成文章……)
- 获取键盘输入或者USB扫描枪数据
/// <summary> /// 获取键盘输入或者USB扫描枪数据 可以是没有焦点 应为使用的是全局钩子 /// USB扫描枪 是模拟键盘按下 /// 这里主要处理扫描枪的值,手动输入的 ...