一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語(yǔ)言 - JAVA教程 - JAVA中的deflate壓縮實(shí)現(xiàn)方法

JAVA中的deflate壓縮實(shí)現(xiàn)方法

2020-06-09 11:57jingxian JAVA教程

下面小編就為大家?guī)?lái)一篇JAVA中的deflate壓縮實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

在文件的傳輸過(guò)程中,為了使大文件能夠更加方便快速的傳輸,一般采用壓縮的辦法來(lái)對(duì)文件壓縮后再傳輸,JAVA中的java.util.zip包中的Deflater和Inflater類(lèi)為使用者提供了DEFLATE算法的壓縮功能,以下是自已編寫(xiě)的壓縮和解壓縮實(shí)現(xiàn),并以壓縮文件內(nèi)容為例說(shuō)明,其中涉及的具體方法可查看JDK的API了解說(shuō)明。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/**
   *
   * @param inputByte
   *      待解壓縮的字節(jié)數(shù)組
   * @return 解壓縮后的字節(jié)數(shù)組
   * @throws IOException
   */
  public static byte[] uncompress(byte[] inputByte) throws IOException {
    int len = 0;
    Inflater infl = new Inflater();
    infl.setInput(inputByte);
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    byte[] outByte = new byte[1024];
    try {
      while (!infl.finished()) {
        // 解壓縮并將解壓縮后的內(nèi)容輸出到字節(jié)輸出流bos中
        len = infl.inflate(outByte);
        if (len == 0) {
          break;
        }
        bos.write(outByte, 0, len);
      }
      infl.end();
    } catch (Exception e) {
      //
    } finally {
      bos.close();
    }
    return bos.toByteArray();
  }
 
  /**
   * 壓縮.
   *
   * @param inputByte
   *      待壓縮的字節(jié)數(shù)組
   * @return 壓縮后的數(shù)據(jù)
   * @throws IOException
   */
  public static byte[] compress(byte[] inputByte) throws IOException {
    int len = 0;
    Deflater defl = new Deflater();
    defl.setInput(inputByte);
    defl.finish();
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    byte[] outputByte = new byte[1024];
    try {
      while (!defl.finished()) {
        // 壓縮并將壓縮后的內(nèi)容輸出到字節(jié)輸出流bos中
        len = defl.deflate(outputByte);
        bos.write(outputByte, 0, len);
      }
      defl.end();
    } finally {
      bos.close();
    }
    return bos.toByteArray();
  }
 
  public static void main(String[] args) {
    try {
      FileInputStream fis = new FileInputStream("D:\\testdeflate.txt");
      int len = fis.available();
      byte[] b = new byte[len];
      fis.read(b);
      byte[] bd = compress(b);
      // 為了壓縮后的內(nèi)容能夠在網(wǎng)絡(luò)上傳輸,一般采用Base64編碼
      String encodestr = Base64.encodeBase64String(bd);
      byte[] bi = uncompress(Base64.decodeBase64(encodestr));
      FileOutputStream fos = new FileOutputStream("D:\\testinflate.txt");
      fos.write(bi);
      fos.flush();
      fos.close();
      fis.close();
    } catch (Exception e) {
      //
    }
  }

以上這篇JAVA中的deflate壓縮實(shí)現(xiàn)方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99久久国产综合精品女不卡 | 精品性影院一区二区三区内射 | 啪啪模拟器 | 午夜爱情动作片P | 爸爸的宝贝小说全文在线阅读 | 福利视频导航大全 | 14一18cad中国大学生 | 久久 这里只精品 免费 | 成人精品区 | 日韩欧美天堂 | 99爱在线| 久久伊人免费 | 四虎精品永久在线网址 | 国产在线视频色综合 | 国产精品99久久 | 亚洲 日韩 国产 制服 在线 | 亚洲国产欧美在线成人aaaa | 亚洲精选在线观看 | 亚洲精品AV无码永久无码 | 欧美日韩一区不卡 | 美女靠逼免费视频 | 精品欧美小视频在线观看 | 国产美女极品免费视频 | 亚洲国产在线99视频 | 欧美成人禁片在线观看俄罗斯 | 女教师被女同学调教成脚奴 | 欧美丰满大乳大屁在线观看股 | 亚洲青草视频 | 日韩欧美亚洲一区二区综合 | 国产免费专区 | 亚洲波霸 | 校园高h| dasd817黑人在线播放 | 日韩一区二区三 | 777午夜精品免费播放 | 国产精品免费网站 | 国产精品久久久久aaaa | 无遮18禁在线永久免费观看挡 | 久久国产精品二区99 | 国产极品美女在线 | 色综合久久夜色精品国产 |