Δημιουργία συμπιεσμένου ZIP αρχείου με Java

Αυτό το χρειάστηκα σήμερα το πρωί. Η φιλοσοφία είναι ότι έχουμε να διαχειριστούμε κάποια αρχεία σε ένα ή παραπάνω φακέλους στο δίσκο και πρέπει να δημιουργήσουμε ένα συμπιεσμένο zip αρχείο με τα αρχεία αυτά.

Η λύση είναι αρκετά απλή.

  1. Παίρνουμε τις διαδρομές των αρχείων και τις βάζουμε σε ένα collection (Array πχ)
  2. Ανοίγουμε ένα output stream στο δίσκο που του “δίνουμε zip ιδιότητες”
  3. Διαβάζουμε ένα-ένα τα αρχεία και τα βάζουμε στο  output stream
  4. Κλείνουμε το stream
Παρακάτω είναι ένα παράδειγμα όπου η μέθοδος createZip της κλάσης Archive παίρνει ώς ορίσματα ενα String Array με τις διαδρομές των αρχείων και το όνομα του zip που θα δημιουργηθεί.
public class Archive {

	/**
	 * @param filenames Files to be included in ZIP
	 * @param zipfile ZIP file name
	 */
	public static void createZip(String[] filenames, String zipfile){

		// Create a buffer for reading the files
		byte[] buf = new byte[1024];

		try {
		    // Create the ZIP file
		    String outFilename = zipfile;
		    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(outFilename));

		    // Compress the files
		    for (int i=0; i<filenames.length; i++) {
		        FileInputStream in = new FileInputStream(filenames[i]);

		        // Add ZIP entry to output stream.
		        out.putNextEntry(new ZipEntry(filenames[i]));

		        // Transfer bytes from the file to the ZIP file
		        int len;
		        while ((len = in.read(buf)) > 0) {
		            out.write(buf, 0, len);
		        }

		        // Complete the entry
		        out.closeEntry();
		        in.close();
		    }

		    // Complete the ZIP file
		    out.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}
Happy ZIPing…     🙂
Facebook Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.