java實現哈夫曼編碼的檔案壓縮
阿新 • • 發佈:2022-04-20
java實現哈夫曼編碼的檔案壓縮
思路見:
新增程式碼
/** * 壓縮檔案 * * @param src 壓縮檔案的全路徑 * @param dstFile 壓縮後存放的路徑 */ private static void zipFile(String src, String dstFile) { FileInputStream is = null; FileOutputStream os = null; ObjectOutputStream oos = null; try { // 建立IO流 is = new FileInputStream(src); // 建立和原始檔相同大小的byte陣列 byte[] bytes = new byte[is.available()]; // 讀取檔案 is.read(bytes); // 解壓 byte[] huffmanZip = huffmanZip(bytes); // 建立檔案輸出流存放壓縮檔案 os = new FileOutputStream(dstFile); // 建立和輸出流相關的物件輸出流 oos = new ObjectOutputStream(os); // 這裡以物件的方式進行輸出壓縮檔案,方便恢復 oos.writeObject(huffmanZip); // 最後將編碼表寫入 oos.writeObject(huffmanCodes); } catch (Exception e) { System.out.println(e); } finally { try { is.close(); os.close(); oos.close(); } catch (IOException e) { e.printStackTrace(); } } }
測試方法
public static void main(String[] args) {
String srcFile = "D:\\圖片\\Camera Roll\\1.jpg";
String dstFile = "D:\\圖片\\dst.zip";
zipFile(srcFile, dstFile);
System.out.println("壓縮成功");
}