程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> JAVA中的deflate壓縮實現,javadeflate壓縮

JAVA中的deflate壓縮實現,javadeflate壓縮

編輯:JAVA綜合教程

JAVA中的deflate壓縮實現,javadeflate壓縮


在文件的傳輸過程中,為了使大文件能夠更加方便快速的傳輸,一般采用壓縮的辦法來對文件壓縮後再傳輸,JAVA中的java.util.zip包中的Deflater和Inflater類為使用者提供了DEFLATE算法的壓縮功能,以下是自已編寫的壓縮和解壓縮實現,並以壓縮文件內容為例說明,其中涉及的具體方法可查看JDK的API了解說明。

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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved