1. อ่านข้อมูลไฟล์ด้วย "FileInputStream"
2. กำหนดชื่อให้ "ZipEntry" และเขียนไฟล์ออกด้วย "ZipOutputStream" ครับ
ตัวอย่าง
1. ตัวอย่างการ ZIP ไฟล์ ทำการอ่านไฟล์ "C:\\users\\nopphanan7\\Directory1\\photo.jpg" และทำการบีบอัดไฟล์ชื่อ "C:\\users\\nopphanan7\\MyFile.zip" ออกมา.
package demo.compress; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class CompressFileExample { /** * @param args */ public static void main(String[] args) { byte[] buffer = new byte[1024]; try { FileOutputStream fos = new FileOutputStream("C:\\users\\nopphanan7\\MyFile.zip"); ZipOutputStream zos = new ZipOutputStream(fos); ZipEntry ze = new ZipEntry("photo.jpg"); zos.putNextEntry(ze); FileInputStream in = new FileInputStream("C:\\users\\nopphanan7\\Directory1\\photo.jpg"); int len; while ((len = in.read(buffer)) > 0) { zos.write(buffer, 0, len); } in.close(); zos.closeEntry(); // remember close it zos.close(); System.out.println("Compress file is done"); } catch (IOException ex) { ex.printStackTrace(); } } }ผลลัพธ์ที่ได้คือ
Compress file is done
2. ตัวอย่างเพิ่มเติม การบีบอัดไฟล์แบบ ZIP โดยการ Recursively อ่านข้อมูลไฟล์ทั้งหมดในโฟรเดอร์ "C:\\users\\nopphanan7\\Directory1" และทำการบีบอัดไฟล์ออกมาในชื่อ "C:\\users\\nopphanan7\\Directory1.zip".
package demo.compress; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class CompressFileExample2 { Listผลลัพธ์ที่ได้คือfileList; private static final String OUTPUT_ZIP_FILE = "C:\\users\\nopphanan7\\Directory1.zip"; private static final String SOURCE_FOLDER = "C:\\users\\nopphanan7\\Directory1"; CompressFileExample2() { fileList = new ArrayList (); } /** * @param args */ public static void main(String[] args) { CompressFileExample2 appZip = new CompressFileExample2(); appZip.generateFileList(new File(SOURCE_FOLDER)); appZip.zipIt(OUTPUT_ZIP_FILE); } /** * Zip it * @param zipFile * output ZIP file location */ public void zipIt(String zipFile) { byte[] buffer = new byte[1024]; try { FileOutputStream fos = new FileOutputStream(zipFile); ZipOutputStream zos = new ZipOutputStream(fos); System.out.println("Output to Zip : " + zipFile); for (String file : this.fileList) { System.out.println("File Added : " + file); ZipEntry ze = new ZipEntry(file); zos.putNextEntry(ze); FileInputStream in = new FileInputStream(SOURCE_FOLDER + File.separator + file); int len; while ((len = in.read(buffer)) > 0) { zos.write(buffer, 0, len); } in.close(); } zos.closeEntry(); // remember close it zos.close(); System.out.println("Compress file is done"); } catch (IOException ex) { ex.printStackTrace(); } } /** * Traverse a directory and get all files, and add the file into fileList * * @param node * file or directory */ public void generateFileList(File node) { // add file only if (node.isFile()) { fileList.add(generateZipEntry(node.getAbsoluteFile().toString())); } if (node.isDirectory()) { String[] subNote = node.list(); for (String filename : subNote) { generateFileList(new File(node, filename)); } } } /** * Format the file path for zip * * @param file * file path * @return Formatted file path */ private String generateZipEntry(String file) { return file.substring(SOURCE_FOLDER.length() + 1, file.length()); } }
Output to Zip : C:\users\nopphanan7\Directory1.zip File Added : FIO.jpg File Added : photo.jpg File Added : photo2.jpg File Added : the_dark_knight.jpg File Added : ubuntu-black-1440x900.jpg Compress file is done
0 comments:
Post a Comment