成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java和.NET的GZIP壓縮功能對比

開發 后端
我是在使用IKVM.NET研究Java和.NET之間的互操作性時發現的。我認為這很有意思,所以分享給大家。

本文主要比較了Java和.NET提供的GZIP壓縮功能。

介紹

在本文中,我們將討論Java和.NET提供的GZIP壓縮功能,并且用實例來說明哪個壓縮方法更佳。

在Java中,我們有提供GZIP壓縮的GZIPOutputStream類,這個類在Java.util.zip包中。而在.NET中,我們有執行GZIP壓縮的GZipStream類,這個類在System.IO.Compression命名空間下。

我這里所說的更好方法針對的是小尺寸文件,因為我已經檢驗過小文件的效果,比如說當我們想在發送之前壓縮我們的信息文件。

代碼解析

1)Java GZIPOutputStream類

該GZIPOutputStream類為壓縮數據在GZIP格式文件中創建了輸入流。這個類有以下幾種的構造函數:

1.創建具有默認大小的輸出流:

GZIPOutputStream(OutputStream out);

2.創建新的具有默認緩沖區大小和指定刷新模式的輸出流:

GZIPOutputStream(OutputStream out,boolean syncFlush);

3.創建新的具有指定緩沖區大小的輸出流:

GZIPOutputStream(OutputStream out,int size);

4.創建新的具有指定的緩沖區大小和刷新模式的輸出流:

GZIPOutputStream(OutputStream out,int size,boolean syncFlush);

我們需要編寫以下代碼來壓縮文件:

 

  1. import java.io.*; 
  2. import java.util.zip.*; 
  3.  
  4. class abc{ 
  5.  
  6. public static void main(String args[]) 
  7.   { 
  8.    String srcfile="D:/abhi.txt"
  9.          String dstfile="D:/abhi1.txt"
  10.  
  11.   try
  12.  
  13.    FileInputStream fin= new FileInputStream(srcfile); 
  14.        GZIPOutputStream fout=new GZIPOutputStream(new FileOutputStream(dstfile)); 
  15.  
  16.              byte[] buffer = new byte[1024]; 
  17.              int bytesRead; 
  18.  
  19.              while ((bytesRead = fin.read(buffer)) != -1//srcfile.getBytes() 
  20.              { 
  21.                fout.write(buffer, 0, bytesRead); 
  22.              } 
  23.  
  24.                fin.close(); 
  25.                   fout.close(); 
  26.  
  27.                      File file =new File(srcfile); 
  28.                    System.out.println("Before Compression file Size : 
  29.                     " + file.length()+" Bytes"); 
  30.                      File file1 =new File(dstfile); 
  31.                      System.out.println("After Compression file Size : 
  32.                       " + file1.length()+" Bytes"); 
  33.  
  34.   }catch(Exception ex) 
  35.     { 
  36.   System.out.println(ex); 
  37.     } 
  38.    } 
  39.  

運行代碼。輸出如下,因為我提供的源文件只有481個字節大小,然后經過壓縮后輸出的文件大小為207個字節。

現在,我們用相同的輸入文件來看看GZIP壓縮后的效果。

2).NET GZipStream類

GZipStream壓縮string或文件。它可以讓你有效地保存數據,如壓縮日志文件,消息文件。這個類存在于System.IO.Compression的命名空間。它創建GZIP文件,并將其寫入磁盤。

GZipStream類提供以下構造函數:

1.通過使用指定字節流和壓縮等級初始化GZipStream類的新實例:

GZipStream(Stream, CompressionLevel)

2.通過使用指定流和壓縮模式初始化GZipStream類的新實例:

GZipStream(Stream, CompressionMode)

3.通過使用指定流和壓縮等級初始化GZipStream類的新實例,并可選是否打開流:

GZipStream(Stream, CompressionLevel, Boolean)

4.通過使用指定流和壓縮模式初始化GZipStream類的新實例,并可選是否打開流:

GZipStream(Stream, CompressionMode, Boolean)

我們需要編寫以下代碼來壓縮文件:

  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. using System.IO; 
  6. using System.IO.Compression; 
  7.  
  8. namespace Compress 
  9.     class Program 
  10.     { 
  11.         static void Main(string[] args) 
  12.         { 
  13.             string srcfile = "D:\\abhi.txt"
  14.             string dstfile = "D:\\abhi2.txt"
  15.  
  16.             byte[] b; 
  17.  
  18.             using (FileStream f = new FileStream(srcfile, FileMode.Open)) 
  19.             { 
  20.                 b = new byte[f.Length]; 
  21.                 f.Read(b, 0, (int)f.Length); 
  22.             } 
  23.  
  24.             using (FileStream fs = new FileStream(dstfile, FileMode.Create)) 
  25.  
  26.             using (GZipStream gzip = new GZipStream(fs, CompressionMode.Compress, false)) 
  27.             { 
  28.                 gzip.Write(b, 0, b.Length); 
  29.             } 
  30.  
  31.             FileInfo f2 = new FileInfo(srcfile); 
  32.             System.Console.WriteLine("Size Of File Before Compression :"+f2.Length); 
  33.  
  34.             FileInfo f1 = new FileInfo(dstfile); 
  35.             System.Console.WriteLine("Size Of File Before Compression :" + f1.Length); 
  36.         } 

運行代碼。輸出如下,由于我提供的是481字節大小的源文件,然后壓縮后的輸出文件大小為353個字節。

大家可以看到,源文件為481字節,壓縮文件大小為:

  1.  .NET的GzipStream:353字節

  2. Java的GZIPOutputStream :207字節

壓縮后的尺寸大小差距很明顯。因此,我們可以得出結論,Java的GZIP壓縮比.NET更好。

興趣點

我是在使用IKVM.NET研究Java和.NET之間的互操作性時發現的。我認為這很有意思,所以分享給大家。

責任編輯:王雪燕 來源: 碼農網
相關推薦

2010-07-19 09:01:54

.NET 4.0緩存

2011-03-29 13:56:12

SQL Server 數據壓縮

2011-08-10 17:38:56

Windows7自帶的WinZip

2011-10-09 11:41:22

OracleZFSPillar Axio

2013-07-05 09:28:21

軟路由路由技術

2009-11-06 17:10:34

ChromeFirefox功能對比

2010-09-14 13:10:36

2010-02-03 15:11:53

C++內存區域

2025-02-14 10:16:15

2013-03-22 13:31:52

App制作工具非編程

2009-03-16 12:10:02

Windows 7微軟對比

2023-09-14 22:57:52

2017-06-06 09:56:03

hypervisor成本功能

2010-04-26 13:48:17

iPhone OSiOSWindows Pho

2010-01-22 11:06:03

GNUkFreeBSDLinux

2015-04-13 10:54:42

java.netHashSet

2010-03-09 19:39:37

python程序調試

2019-10-29 09:14:52

ETL架構DataPipelin

2013-11-08 10:59:17

Hadoop虛擬化VMware vSph

2022-01-10 09:33:59

Firefox 95Chrome 97 Linux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜av电影 | 亚洲小视频在线播放 | 成人一级视频在线观看 | 欧美国产激情 | av网站免费| 狠狠综合久久av一区二区老牛 | 97av| 国产精品免费高清 | 欧美一区二区三区国产精品 | 九色网址 | 久久伊人精品 | 精品视频在线观看 | 国产高清视频在线观看播放 | 高清国产一区二区 | 国产精品视频一二三区 | 黄色一级特级片 | av永久 | 中文字幕精品一区 | 欧美亚洲在线 | 日韩视频中文字幕 | 一级视频黄色 | 国产精品69久久久久水密桃 | 国产精品日韩在线观看一区二区 | 国产女人与拘做受视频 | 亚洲精品久久久久久久久久久久久 | 精品一区二区三区免费视频 | 日日夜夜天天 | 久久99蜜桃综合影院免费观看 | 成人在线视频一区 | 逼逼视频 | 天天拍天天操 | 国产成年人小视频 | 久久精品—区二区三区 | 在线视频99 | 四虎永久在线精品免费一区二 | 久久久久久国产精品免费免费 | 欧美日韩精品中文字幕 | 在线欧美一区 | 日韩精品一 | 国产一级片免费视频 | 99国产视频 |