如何在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.......
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP