您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)怎么在java中利用壓縮流實現(xiàn)壓縮與解壓,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
Java是一門面向?qū)ο缶幊陶Z言,可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序。
1.概念
壓縮流可以將輸入的數(shù)據(jù)變?yōu)閴嚎s格式后進(jìn)行輸出,或者讀取壓縮格式的數(shù)據(jù)后,解壓為正常數(shù)據(jù)。
2.壓縮步驟
(1)生成一個壓縮類對象,這個對象來自于一個".zip"的文件,通過它產(chǎn)生一ZipOutputStream對象;
(2)生成壓縮對象入口,因為需要被壓縮的文件不止一個。需要用ZipEntry方法生成壓縮入口文件后才能放進(jìn)壓縮文件;
(3)用putNextEntry將壓縮入口放入壓縮文件;
(4)將文件內(nèi)容寫入了out.write(),將壓縮入口和文件流關(guān)閉。
3.目錄壓縮
import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class ZipStreamExam2 { public static void main(String[] args) { try { File file = new File("d:\\zipmultidir"); ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream("d:\\zipmultidir.zip"))); zipDir(file, zos, file); zos.flush(); zos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //壓縮一個目錄至zip文件 private static void zipDir(File dir, ZipOutputStream zos, File rootDir) throws IOException { if (!dir.isDirectory()) return; File[] files = dir.listFiles(); for (int i = 0; i < files.length; i++) { if (files[i].isFile()) { System.out.println(files[i].getAbsolutePath()); String now = files[i].getAbsolutePath(); String root = rootDir.getAbsolutePath(); String name = now.substring(root.length() + 1); System.out.println(name); FileInputStream fis = new FileInputStream(files[i]); byte buf[] = new byte[1024]; int len = 0; ZipEntry ze = new ZipEntry(name); zos.putNextEntry(ze); while ((len = fis.read(buf)) != -1) { zos.write(buf, 0, len); } fis.close(); } else if (files[i].isDirectory()) { zipDir(files[i], zos, rootDir); } } } }
4.解壓到目錄
import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; /** * Created by test2 on 2016/8/19. */ public class ZipStreamExam3 { public static void main(String[] args) { try { File srcFile = new File("d:\\zipmultidir.zip"); System.out.println(srcFile.getCanonicalPath()); String curDir = srcFile.getParent()+File.separator+"destDir"+File.separator; ZipInputStream zipInputStream = new ZipInputStream(new BufferedInputStream(new FileInputStream(srcFile))); ZipEntry ze = null; byte[] buf = new byte[1024]; int len = 0; while ((ze = zipInputStream.getNextEntry()) != null) { String filePath = curDir + ze.getName(); File destFile = new File(filePath); File destDir = new File(destFile.getParent()); if(!destDir.exists()){ destDir.mkdirs(); } BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(destFile)); while ((len = zipInputStream.read(buf)) != -1) { bufferedOutputStream.write(buf, 0, len); } bufferedOutputStream.flush(); bufferedOutputStream.close(); } zipInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } }
以上就是怎么在java中利用壓縮流實現(xiàn)壓縮與解壓,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。