您好,登錄后才能下訂單哦!
本篇內容介紹了“Java和.NET的GZIP壓縮功能實例分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
代碼解析
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);
我們需要編寫以下代碼來壓縮文件:
import java.io.*; import java.util.zip.*; class abc{ public static void main(String args[]) { String srcfile="D:/abhi.txt"; String dstfile="D:/abhi1.txt"; try{ FileInputStream fin= new FileInputStream(srcfile); GZIPOutputStream fout=new GZIPOutputStream(new FileOutputStream(dstfile)); byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = fin.read(buffer)) != -1) //srcfile.getBytes() { fout.write(buffer, 0, bytesRead); } fin.close(); fout.close(); File file =new File(srcfile); System.out.println("Before Compression file Size : " + file.length()+" Bytes"); File file1 =new File(dstfile); System.out.println("After Compression file Size : " + file1.length()+" Bytes"); }catch(Exception ex) { System.out.println(ex); } } }
運行代碼。輸出如下,因為我提供的源文件只有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)
我們需要編寫以下代碼來壓縮文件:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.IO.Compression; namespace Compress { class Program { static void Main(string[] args) { string srcfile = "D:\\abhi.txt"; string dstfile = "D:\\abhi2.txt"; byte[] b; using (FileStream f = new FileStream(srcfile, FileMode.Open)) { b = new byte[f.Length]; f.Read(b, 0, (int)f.Length); } using (FileStream fs = new FileStream(dstfile, FileMode.Create)) using (GZipStream gzip = new GZipStream(fs, CompressionMode.Compress, false)) { gzip.Write(b, 0, b.Length); } FileInfo f2 = new FileInfo(srcfile); System.Console.WriteLine("Size Of File Before Compression :"+f2.Length); FileInfo f1 = new FileInfo(dstfile); System.Console.WriteLine("Size Of File Before Compression :" + f1.Length); } }
運行代碼。輸出如下,由于我提供的是481字節大小的源文件,然后壓縮后的輸出文件大小為353個字節。
大家可以看到,源文件為481字節,壓縮文件大小為:
.NET的GzipStream:353字節
Java的GZIPOutputStream :207字節
壓縮后的尺寸大小差距很明顯。因此,我們可以得出結論,Java的GZIP壓縮比.NET更好。
“Java和.NET的GZIP壓縮功能實例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。