Erstellen von Zip Dateien

Eine komprimierte Zip Datei kann mit den Boardmitteln von Java erstellt werden. Möchte man jedoch diese auch mit einem Passwort schützen so muss man auf andere Bibliotheken zurück greifen, dazu aber in einem anderen Beitrag mehr.

Zuerst wollen wir eine Textdatei „test.txt“ in ein Zip Archiv Packen.

/**
	 * Komprimieren einer Datei.
	 * @param srcFile - die Quelldatei welche in ein Zip Archiv Komprimiert werden soll
	 * @param destFile - das Ziel Archiv
	 */
	public static void zipFile(final File srcFile, final File destFile) {
		ZipOutputStream zipout = null;
		try {
			//Stream auf das Ziel Archiv öffnen
			zipout = new ZipOutputStream(new FileOutputStream(destFile));
			//da wir hier nur eine Datei dem Zip Archiv hinzufügen nur ein Aufruf
			//sollten mehr Dateien hinzugefügt werden so kann mit new File("directory").listFiles();
			//über eine Liste Iteriert werden.
			addFileToZipStream(srcFile, zipout);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} finally {
			//zum Schluss den Stream schließen
			if (zipout != null) {
				try {
					zipout.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

	/**
	 * Fügt einem existierenden ZipOutputStream eine Datei hinzu.
	 * @param file
	 * @param zipOut
	 */
	private static void addFileToZipStream(final File file, final ZipOutputStream zipOut) {
		FileInputStream inAttachmentFile = null;
		try {
			byte[] buffer = new byte[BYTE_CONST];
			int len;
			//ein Stream zur Datei öffnen welche in das Zip Archiv gepackt werden soll.
			inAttachmentFile = new FileInputStream(file);
			zipOut.putNextEntry(new ZipEntry(file.getName()));
			while ((len = inAttachmentFile.read(buffer)) > 0) {
				zipOut.write(buffer, 0, len);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			//zum Schluss den Stream schließen
			if (inAttachmentFile != null) {
				try {
					inAttachmentFile.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}

	}

 

Ein Gedanke zu „Erstellen von Zip Dateien

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.