如何在Java中壓縮和解壓縮檔案資料?
Java 提供了兩個類,即 DeflaterOutputStream 和 InflaterInputStream,用於壓縮和解壓縮資料。
壓縮單個檔案
要壓縮單個檔案:
- 建立一個 **FileInputStream** 物件,將要壓縮的檔案路徑(字串格式)作為引數傳遞給它的建構函式。
- 建立一個 **FileOutputStream** 物件,將輸出檔案的路徑(字串格式)作為引數傳遞給它的建構函式。
- 建立一個 **DeflaterOutputStream** 物件,將上面建立的 FileOutputStream 物件作為引數傳遞給它的建構函式。
- 然後,讀取輸入檔案的內容,並使用 DeflaterOutputStream 類的 write() 方法寫入。
示例
import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.DeflaterOutputStream; public class CompressingFiles { public static void main(String args[]) throws IOException { //Instantiating the FileInputStream String inputPath = "D:\ExampleDirectory\logo.jpg"; FileInputStream inputStream = new FileInputStream(inputPath); //Instantiating the FileOutputStream String outputPath = "D:\ExampleDirectory\compressedLogo.txt"; FileOutputStream outputStream = new FileOutputStream(outputPath); //Instantiating the DeflaterOutputStream DeflaterOutputStream compresser = new DeflaterOutputStream(outputStream); int contents; while ((contents=inputStream.read())!=-1){ compresser.write(contents); } compresser.close(); System.out.println("File compressed......."); } }
輸出
File compressed.......
解壓縮壓縮檔案
要解壓縮壓縮檔案:
- 建立一個 **FileInputStream** 物件,將壓縮檔案的路徑(字串格式)作為引數傳遞給它的建構函式。
- 建立一個 **FileOutputStream** 物件,將輸出檔案(解壓縮後的影像檔案)的路徑(字串格式)作為引數傳遞給它的建構函式。
- 建立一個 **InflaterInputStream** 物件,將上面建立的 **FileOutputStream** 物件作為引數傳遞給它的建構函式。
- 然後,讀取 **InflaterInputStream** 物件的內容,並使用 FileOutputStream 類的 write() 方法寫入。
示例
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.InflaterInputStream; public class DeCompressingFiles { public static void main(String args[]) throws IOException { StringinputPath ="D:\ExampleDirectory\compressed.txt"; //Instantiating the FileInputStream FileInputStream inputStream = new FileInputStream(inputPath); String outputpath = "D:\ExampleDirectory\output.jpg"; FileOutputStream outputStream = new FileOutputStream(outputpath); InflaterInputStream decompresser = new InflaterInputStream(inputStream); int contents; while ((contents=decompresser.read())!=-1){ outputStream.write(contents); } //close the file outputStream.close(); decompresser.close(); System.out.println("File un-compressed......."); } }
輸出
File un-compressed.......
廣告