C# 文件压缩问题
本人使用微软提供的GZipStream类进行文件压缩,但是发现有的文件压缩出来比原文件还要大,这怎么能用啊。请问谁能解决这个问题。
------解决方案--------------------我这里有一个标准GZIP库,把你的邮件说下,我给你发过去。   
 以下是使用方法:   
 using   System;      
 using   System.IO;            
 using   ICSharpCode.SharpZipLib.GZip;            
 class   MainClass      
 {      
 	public   static   void   Main(string[]   args)      
 	{      
 		if   (args[0]   ==    "-d ")    
 		{   //   解压      
 			Stream   s   =   new   GZipInputStream(File.OpenRead(args[1]));      
 			//生成一个GZipInputStream流,用来打开压缩文件。      
 			//因为GZipInputStream由Stream派生,所以它可以赋给Stream。      
 			//它的构造函数的参数是一个表示要解压的压缩文件所代表的文件流      
 			char[] myChar = { '. ', 'g ', 'z '}; 
 			FileStream   fs   =   File.Create(Path.GetFileNameWithoutExtension( "bak " + args[1].TrimEnd(myChar)));      
 			//生成一个文件流,它用来生成解压文件      
 			//可以使用System.IO.File的静态函数Create来生成文件流      
 			int   size   =   2048;//指定压缩块的大小,一般为2048的倍数      
 			byte[]   writeData   =   new   byte[size];//指定缓冲区的大小      
 			while   (true)    
 			{      
 				size   =   s.Read(writeData,   0,   size);//读入一个压缩块      
 				if   (size   >    0)    
 				{      
 					fs.Write(writeData,   0,   size);//写入解压文件代表的文件流      
 				}    
 				else    
 				{      
 					break;//若读到压缩文件尾,则结束      
 				}      
 			}      
 			s.Close();      
 		}    
 		else    
 		{   //   压缩      
 			Stream   s   =   new   GZipOutputStream(File.Create(args[0]   +    ".gz "));      
 			//生成一个GZipOutputStream流,用来生成压缩文件。      
 			//因为GZipOutputStream由Stream派生,所以它可以赋给Stream。      
 			FileStream   fs   =   File.OpenRead(args[0]);      
 			//生成一个文件流,它用来打开要压缩的文件      
 						 //可以使用System.IO.File的静态函数OpenRead来生成文件流      
 						 byte[]   writeData   =   new   byte[fs.Length];      
 			//指定缓冲区的大小      
 			fs.Read(writeData,   0,   (int)fs.Length);      
 			//读入文件      
 			s.Write(writeData,   0,   writeData.Length);      
 			//写入压缩文件      
 			s.Close();      
 			//关闭文件      
 		}      
 	}      
 }