熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

數據壓縮格式Java語言應用程序設計方法

2013-11-23 19:12:28  來源: Java核心技術 

  數據壓縮格式Java語言應用程序設計方法
  
       
  
  ——第一部分 ZIP壓縮格式程序設計方法
  
  作者蘇洋 本文選自賽迪網
  
  基於Java語言的健壯姓跨平台應用能力以及面向對象的程序設計特征等因素Java語言一直是軟件工程師在構建網絡應用程序特別是需要在異構平台下運行的軟件系統時的首選程序設計語言
  
  但是由於網絡帶寬的限制特別是開發以互聯網為傳輸媒介的軟件系統時軟件在運行過程中的數據傳輸效率會成為評價一套軟件系統姓能的重要指標由於網絡的數據傳輸速度是軟件運行的客觀因素因此在這種情況下程序設計人員首先考慮的減少軟件系統運行過程中需要傳輸的數據量如果有些數據必須要傳輸則軟件工程師通常將這些數據在發送端進行壓縮而在數據接收端將數據解壓縮從而主動減少應用系統數據傳輸量
  
  JDK環境中提供了多種類型的數據壓縮方式總結起來利用Java語言可以創建的數據文件壓縮格式包括如下類型
  
  ●ZIP格式
  
  ●GZIP格式
  
  ●JAR格式
  
  在本系列文章中將分別對利用Java語言創建類型數據壓縮文件的方法以及JDK API中相關對象的結構和成員方法的應用形式進行說明
  
  第一部分 ZIP壓縮格式程序設計方法
   
  
  當然在利用JDK API創建壓縮數據文件時不需要詳細了解上述ZIP文件定義格式但是JDK中定義的多種類型用於進行數據壓縮和管理的對象正是根據上述格式實現數據壓縮和解壓縮的
  
   JDK API中ZIP壓縮格式支持對象
  
  ZIP壓縮格式是在Windows操作系統環境中經常應用的壓縮格式ZIP壓縮格式的壓縮比高壓縮速度快因而成為利用Java語言定義需要在網絡中進行數據傳輸時數據壓縮格式的首選
  
  在JDK API的javautilzip包中定義了多種類型用於創建和讀取zip壓縮格式文件的對象常用對象的定義形式和主要成員方法如下
  
  ●ZipEntry
  
  由於可以將多個文件壓縮到同一壓縮文件中因此JDK API中定義的ZipEntry對象用於標識ZIP壓縮文件中每個原始文件的入口該對象的定義結構為
  
  對象定義結構
  
  javautilzipZipEntry
  
  靜態成員變量
  
  CENATTCENATXCENCRC … …
  
  這些靜態成員變量用於定義在壓縮過程中采用的壓縮算法
  
  構造方法
  
  ZipEntry(String name) 采用字符串類型參數name定義壓縮文件中的原始文件入口對象實例
  
  ZipEntry(ZipEntry e) 采用ZipEntry對象類型參數e定義壓縮文件中的原始文件入口對象實例
  
  成員方法
  
  long getCompressedSize() 獲取壓縮文件的大小
  
  void setCompressedSize(long csize) 設置壓縮文件的大小
  
  int getMethod() 獲取壓縮時采用的壓縮算法
  
  void setMethod(int method) 設置壓縮算法
  
  long getSize() 獲取壓縮原始文件的大小
  
  void setSize(long size) 設置壓縮原始文件的大小
  
  long getTime() 獲取壓縮文件入口標識的定義時間
  
  void setTime(long time) 設置壓縮文件入口標識的定義時間
  
  boolean isDirectory() 判斷該壓縮入口標識是否代表目錄
  
  String getName() 返回壓縮入口標識的名稱
  
  ●ZipFile
  
  該對象用於從ZIP壓縮格式文件中讀取壓縮原始文件的入口
  
  對象定義結構
  
  javautilzipZipFile
  
  靜態成員變量
  
  CENATTCENATXCENCRC … …
  
  這些靜態成員變量用於定義在壓縮過程中采用的壓縮算法
  
  構造方法
  
  ZipFile(File file) 從File對象代表的壓縮文件中讀取壓縮原始文件
  
  ZipFile(File file int mode) 從File對象代表的壓縮文件中讀取壓縮原始文件並且可以指定ZIP文件讀取模式
  
  ZipFile(String name) 打開字符串參數name表示的ZIP壓縮文件
  
  成員方法
  
  void close() 關閉被讀取的ZIP壓縮文件
  
  Enumeration entries() 枚舉出ZIP壓縮文件中的各個壓縮原始文件入口(Entry)
  
  ZipEntry getEntry(String name) 獲取壓縮文件中的各個壓縮原始文件入口
  
  InputStream getInputStream(ZipEntry entry) 通過ZIP壓縮文件中的入口創建輸入流對象
  
  String getName() 獲取ZIP壓縮文件的名稱
  
  int size() 獲取壓縮文件中的入口數量
  
  ●ZipInputStream
  
  該對象用於從ZIP壓縮文件中創建輸入流對象
  
  對象定義結構
  
  javautilzipZipInputStream
  
  靜態成員變量
  
  CENATTCENATXCENCRC … …
  
  這些靜態成員變量用於定義在壓縮過程中采用的壓縮算法
  
  構造方法
  
  ZipInputStream(InputStream in) 應用輸入流對象創建從ZIP文件中讀取數據的輸入流對象
  
  成員方法
  
  int available() 判斷當前入口指定的壓縮原始文件中是否還有未讀數據
  
  void close() 關閉ZIP輸入流對象
  
  void closeEntry() 關閉被讀取的ZIP入口並移動到下一壓縮原始文件入口
  
  protectedZipEntry createZipEntry(String name) 利用指定的名稱創建ZipEntry對象實例
  
  ZipEntry getNextEntry() 將輸入流對象移動到下一入口對象
  
  int read(byte[] b int off int len) 從當前ZipEntry中讀取字節數組
  
  long skip(long n) 將輸入流指定的讀取數據位置移動n個字節
  
  ●ZipOutputStream
  
  該數據輸出流對象用於創建ZIP壓縮文件
  
  對象定義結構
  
  javautilzipZipOutputStream
  
  靜態成員變量
  
  CENATTCENATXCENCRC … …
  
  這些靜態成員變量用於定義在壓縮過程中采用的壓縮算法
  
  構造方法
  
  ZipOutputStream(OutputStream out) 應用輸出流對象實例創建ZIP格式輸出流對象
  
  成員方法
  
  void close() 關閉ZIP輸出流對象
  
  void closeEntry() 關閉當前ZIP輸出流對象指定的Entry並移動到下一Entry
  
  void putNextEntry(ZipEntry e) 在ZIP壓縮文件中創建新的壓縮原始文件入口
  
  void setComment(String comment) 設置壓縮文件的說明信息
  
  void setMethod(int method) 設置采用的壓縮算法
  
  void write(byte[] b int off int len) 通過ZIP輸出流對象向壓縮文件中輸出字節數組b
  
   創建ZIP壓縮格式文件實例
  
  經過前面對JDK API中創建ZIP壓縮格式文件的相關對象的結構成員方法定義形式的說明讀者一定會問如何應用這些對象和對象中定義的成員方法呢?請讀者看下面的實例代碼
  
  
  
  //ZipDemojava
  
  import javaio*;
  
  import javautilzip*;
  
  public class ZipDemo
  
  {
  
  public static void main(String[] args)
  
  {
  
  if (argslength != )
  
  {
  
  Systemoutprintln(請輸入被壓縮文件的名稱和壓縮文件的名稱!);
  
  Systemexit();
  
  }
  
  try
  
  {
  
  //創建文件輸入流對象
  
  FileInputStream in = new FileInputStream( args[] );
  
  //創建文件輸出流對象
  
  FileOutputStream out = new FileOutputStream( args[] );
  
  //創建ZIP數據輸出流對象
  
  ZipOutputStream zipOut = new ZipOutputStream( out );
  
  //創建指向壓縮原始文件的入口
  
  ZipEntry entry = new ZipEntry( args[] );
  
  zipOutputNextEntry( entry );
  
  //向壓縮文件中輸出數據
  
  int nNumber;
  
  byte[] buffer = new byte[];
  
  while ((nNumber=inread(buffer)) != )
  
  zipOutwrite(buffernNumber);
  
  //關閉創建的流對象
  
  zipOutclose();
  
  outclose();
  
  inclose();
  
  }
  
  catch(IOException e)
  
  {
  
  Systemoutprintln( e );
  
  }
  
  }
  
  }
  
  

From:http://tw.wingwit.com/Article/program/Java/hx/201311/26438.html
  • 上一篇文章:

  • 下一篇文章:
  • Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.