欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
利用JAVA API函數實(shí)現數據的壓縮與解壓縮(2)
利用JAVA API函數實(shí)現數據的壓縮與解壓縮(2)
http://www.51cto.com 2005-10-11 00:00 作者:夏治(Tim) 出處:51cto.com
【導讀】這篇文章簡(jiǎn)要的介紹了數據的壓縮與解壓縮,并展示了用java.util.zip包來(lái)實(shí)現數據的壓縮與解壓縮是多么的方便與高效。
例程1源代碼:

UnZip.java

import java.io.*;

import java.util.zip.*;

public class UnZip {

static final int BUFFER = 2048;

public static void main (String argv[]) {

try {

BufferedOutputStream dest = null;

FileInputStream fis = new

FileInputStream(argv[0]);

ZipInputStream zis = new

ZipInputStream(new BufferedInputStream(fis));

ZipEntry entry;

while((entry = zis.getNextEntry()) != null) {

System.out.println("Extracting: " +entry);

int count;

byte data[] = new byte[BUFFER];

// write the files to the disk

FileOutputStream fos = new

FileOutputStream(entry.getName());

dest = new

BufferedOutputStream(fos, BUFFER);

while ((count = zis.read(data, 0, BUFFER))

!= -1) {

dest.write(data, 0, count);

}

dest.flush();

dest.close();

}

zis.close();

} catch(Exception e) {

e.printStackTrace();

}}

}

有一點(diǎn)值得大家注意,類(lèi)ZipInputStream讀出ZIP文件序列(簡(jiǎn)單地說(shuō)就是讀出這個(gè)ZIP文件壓縮了多少文件),而類(lèi)ZipFile使用內嵌的隨機文件訪(fǎng)問(wèn)機制讀出其中的文件內容,所以不必順序的讀出ZIP壓縮文件序列。

注意:ZIPInputStream和ZipFile之間另外一個(gè)基本的不同點(diǎn)在于高速緩沖的使用方面。當文件使用ZipInputStream和FileInputStream流讀出的時(shí)候,ZIP條目不使用高速緩沖。然而,如果使用ZipFile(文件名)來(lái)打開(kāi)文件,它將使用內嵌的高速緩沖,所以如果ZipFile(文件名)被重復調用的話(huà),文件只被打開(kāi)一次。緩沖值在第二次打開(kāi)進(jìn)使用。如果你工作在UNIX系統下,這是什么作用都沒(méi)有的,因為使用ZipFile打開(kāi)的所有ZIP文件都在內存中存在映射,所以使用ZipFile的性能優(yōu)于ZipInputStream。然而,如果同一ZIP文件的內容在程序執行期間經(jīng)常改變,或是重載的話(huà),使用ZipInputStream就成為你的首選了。

下面顯示了使用類(lèi)ZipFile來(lái)解壓一個(gè)ZIP文件的過(guò)程:

通過(guò)指定一個(gè)被讀取的ZIP文件,或者是文件名,或者是一個(gè)文件對象來(lái)創(chuàng )建一個(gè)ZipFile對象:

ZipFile zipfile = new ZipFile("figs.zip");

使用entries方法,返回一個(gè)枚舉對象,循環(huán)獲得文件的ZIP條目對象:

while(e.hasMoreElements()) {

entry = (ZipEntry) e.nextElement();

// read contents and save them

}

ZIP條目作為參數傳遞給getInputStream方法,可以讀取ZIP文件中指定條目的內容,能過(guò)其返回的輸入流(InputStram)對象可以方便的讀出ZIP條目的內容:

is = new BufferedInputStream(zipfile.getInputStream(entry));

獲取ZIP條目的文件名,創(chuàng )建輸出流,并保存:

byte data[] = new byte[BUFFER];

FileOutputStream fos = new FileOutputStream(entry.getName());

dest = new BufferedOutputStream(fos, BUFFER);

while ((count = is.read(data, 0, BUFFER)) != -1) {

dest.write(data, 0, count);

}

最后關(guān)閉所有的輸入輸出流 dest.flush();

dest.close();

is.close();

完整的程序代碼如例程2所示。再次編譯這個(gè)文件,并傳遞一個(gè)ZIP格式的文件做為參數:

prompt> java UnZip2 somefile.zip

例程2源碼:

UnZip2.java

import java.io.*;

import java.util.*;

import java.util.zip.*;

public class UnZip2 {

static final int BUFFER = 2048;

public static void main (String argv[]) {

try {

BufferedOutputStream dest = null;

BufferedInputStream is = null;

ZipEntry entry;

ZipFile zipfile = new ZipFile(argv[0]);

Enumeration e = zipfile.entries();

while(e.hasMoreElements()) {

entry = (ZipEntry) e.nextElement();

System.out.println("Extracting: " +entry);

is = new BufferedInputStream

(zipfile.getInputStream(entry));

int count;

byte data[] = new byte[BUFFER];

FileOutputStream fos = new

FileOutputStream(entry.getName());

dest = new

BufferedOutputStream(fos, BUFFER);

while ((count = is.read(data, 0, BUFFER))

!= -1) {

dest.write(data, 0, count);

}

dest.flush();

dest.close();

is.close();

}

} catch(Exception e) {

e.printStackTrace();

}}

}

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
何應用java.util.zip包現數據壓縮與解壓
使用Java?API壓縮和?解壓縮數據
如何將文件打成zip包并下載
Java讀寫(xiě)Zip文件
解壓zip文件
Java無(wú)需解壓直接讀取Zip文件和文件內容
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久