Java和.NET的GZIP压缩功能实例分析

发布时间:2022-01-06 21:00:12 作者:iii
来源:亿速云 阅读:168

本篇内容介绍了“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个字节。

Java和.NET的GZIP压缩功能实例分析

现在,我们用相同的输入文件来看看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个字节。

Java和.NET的GZIP压缩功能实例分析

大家可以看到,源文件为481字节,压缩文件大小为:

  1. .NET的GzipStream:353字节

  2. Java的GZIPOutputStream :207字节

压缩后的尺寸大小差距很明显。因此,我们可以得出结论,Java的GZIP压缩比.NET更好。

“Java和.NET的GZIP压缩功能实例分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. 网站Gzip压缩
  2. 如何基于pako.js实现gzip的压缩和解压功能

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Spring3.0.5 MVC的异常处理是怎样的

下一篇:如何分析Java的Fork/Join并发框架

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》