Ordner in Zip integrieren

honigbeutler

Mitglied
Hallo ich habe folgendes Problem ich habe eine relativ große zip datei und enpacken dateien abgleichen und wieder packen dauert ewig ... deswegen habe ich probiert das ganze so zu lösen was auch wieder zu einer zip datei führt allerdings alle alten einträge fehlen aber die größe stimmt


hier mein code...

Java:
public static void folderIntoArchive(File archive, File folder) throws Exception
	{
		if(!archive.exists() || !folder.exists())
		{
			throw new Exception("Not existend Archive or folder");
		}
		byte[] buffer = new byte[8192];
		
		ZipFile zipFile = new ZipFile(archive);
		Enumeration<? extends ZipEntry> entries = zipFile.entries();

		LinkedList<String> fileList = getAllFiles(folder);
		FileOutputStream fos = new FileOutputStream(archive,true);
		ZipOutputStream zos = new ZipOutputStream(fos);
		for (String fileName : fileList)
		{

			FileInputStream fis = new FileInputStream(fileName);

			String fileNameShort = fileName.substring((int)folder.getAbsolutePath().length() + 1, fileName.length());
			ZipEntry current = new ZipEntry(fileNameShort);
			zos.putNextEntry(current);

			int length;
			while ((length = fis.read(buffer)) > 0)
			{
				zos.write(buffer, 0, length);
			}

			fis.close();
			zos.closeEntry();
		}
		
		zos.close();
		fos.close();
		zipFile.close();
	}

Bei google und im forum leider nix gefunden ich danke für hilfe
 

Marco13

Top Contributor
Hab noch nicht viel mit ZIP gemacht, aber beim ersten drüberschauen:
String fileNameShort = fileName.substring((int)folder.getAbsolutePath().length() + 1, fileName.length());
wird da nicht explizit der Ordner weggeschnitten? Wo soll der Ordner herkommen? Oder geht es genau darum, wie man die datei TROTZ dieser Zeile in einen Ordner packt?
 

honigbeutler

Mitglied
nene das haste falsch verstanden ich habe bereits ein großes zip archiv.

und einen ordner der gleiche dateien hat und die quasi nur im zip archiv updaten soll bzw neu schreiben soll.

und da das archiv so groß ist möchte ich das ganze nicht entpacken rein kopieren/schieben und wieder packen das dauert zu lange.
deswegen würde ich gerne einfach das zip archiv öffnen und die neuen zipentrys reinpacken.
das filenameshort ist nur der name der datei

Edit: und das problem an dem ganzen ist auch nicht wie es mit den ordnern im zip aussieht das problem ist das quasi die neue dazukommenden dateien nur noch existieren wenn man die zip öffnet, allerdings ist die zip größer also die alten dateien sind noch da allerdings scheinen die einträge weg zu sein so das man sie lesen kann...
 

honigbeutler

Mitglied
würde gerne se 1.6 nehmen und würde es halt auch selber implementieren es funktioniert ja auch müsste halt nur nochmal irgendwie die alten einträge neu schreiben
 

honigbeutler

Mitglied
Okay habe mein problem gelöst dank Tempfile


Java:
public static void folderIntoArchive(File zipFile, File folder) throws IOException {
	            // get a temp file
	    File tempFile = File.createTempFile(zipFile.getName(), null);
	            // delete it, otherwise you cannot rename your existing zip to it.
	    tempFile.delete();

	    boolean renameOk=zipFile.renameTo(tempFile);
	    if (!renameOk)
	    {
	        throw new RuntimeException("could not rename the file "+zipFile.getAbsolutePath()+" to "+tempFile.getAbsolutePath());
	    }
	    byte[] buf = new byte[1024];

	    ZipInputStream zin = new ZipInputStream(new FileInputStream(tempFile));
	    ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile));

	    ZipEntry entry = zin.getNextEntry();
	    
	    LinkedList<String> fileList = getAllFiles(folder);
	    
	    while (entry != null) {
	        String name = entry.getName();
	        boolean notInFiles = true;
	        for (int i = 0; i < fileList.size(); i++) {
	        	File f = new File(fileList.get(i));
	            if (f.getName().equals(name)) {
	                notInFiles = false;
	                break;
	            }
	        }
	        if (notInFiles) {
	            // Add ZIP entry to output stream.
	            out.putNextEntry(new ZipEntry(name));
	            // Transfer bytes from the ZIP file to the output file
	            int len;
	            while ((len = zin.read(buf)) > 0) {
	                out.write(buf, 0, len);
	            }
	        }
	        entry = zin.getNextEntry();
	    }
	    // Close the streams        
	    zin.close();
	    // Compress the files
	    for (int i = 0; i < fileList.size(); i++) {
	    	File current = new File(fileList.get(i));
	        InputStream in = new FileInputStream(current);
	        // Add ZIP entry to output stream.
	        out.putNextEntry(new ZipEntry(current.getAbsolutePath().replace( folder.getAbsolutePath() + "\\" , "")));
	        // 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();
	    tempFile.delete();
	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
Tobero .jar Dateine aus einem Ordner laden (Java 16) Allgemeine Java-Themen 5
G Datei aus Ordner wählen, ohne den Dateinamen im Pfad angeben zu müssen Allgemeine Java-Themen 4
Zrebna FileUtils.cleanDirectory() - aber einen sub-Ordner "verschonen" Allgemeine Java-Themen 1
M Ordner kopieren Allgemeine Java-Themen 5
B Datei/Ordner auf Server zugreifen/erstellen Allgemeine Java-Themen 2
I Klassen aus Jar-Dateien aus anderem Ordner laden Allgemeine Java-Themen 3
B Dateien / Bilder von "webapp" Ordner bekommen? Allgemeine Java-Themen 1
F Registry Ordner durchlaufen Allgemeine Java-Themen 1
Drachenbauer Wie sorge ich dafür, dass mein Spiel die ini-Datei in der Resourcen-ordner des Projektes schreibt? Allgemeine Java-Themen 5
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
M Key-File im selben Ordner speichern? Allgemeine Java-Themen 18
R Setting Ordner fehlt Allgemeine Java-Themen 1
J Ordner und Datei Struktur einer War Datei Allgemeine Java-Themen 1
K getResource guckt im Target-Ordner...? Allgemeine Java-Themen 2
P Zum src Ordner einen Projektes navigieren Allgemeine Java-Themen 8
D Ordner commiten mit SvnKit Allgemeine Java-Themen 0
U javax.mail.Folder.list() zeigt nicht alle Ordner Allgemeine Java-Themen 5
D Kopieren von Dateien aus einem Ordner in einen anderen Allgemeine Java-Themen 6
I nach Image Load in ListView, kann Ordner nicht mehr gelöscht werden Allgemeine Java-Themen 1
P JDK installieren Kann man die Ordner in C:\Users\*\AppData\LocalLow\Sun\Java\.... löschen? Allgemeine Java-Themen 3
X Dateien von der Jar zum Ordner kopieren. Allgemeine Java-Themen 4
Ananaskirsche Input/Output Dateien im Ordner Allgemeine Java-Themen 8
A Input/Output Liste der Dateien in einem Ordner in einer Jar Datei erhalten Allgemeine Java-Themen 11
D Ordner auf Desktop erstellen(Pc unabhängig) Allgemeine Java-Themen 5
K NetBeans Ordner bei 'Clean&Build' automatisch in dist Verzeichnis kopieren Allgemeine Java-Themen 0
T Ordner samt Dateien kopieren Allgemeine Java-Themen 11
T Datei Ordner in Binär-Zahlenkette umwandeln Allgemeine Java-Themen 11
M JavaMail Spam-Ordner Allgemeine Java-Themen 2
B Dateien verschwinden aus bin Ordner?! Allgemeine Java-Themen 5
Minonos Einem Programm Zugriff auf bestimmte Ordner geben Allgemeine Java-Themen 5
M Pakete in Ordner Kopieren Allgemeine Java-Themen 7
P Ordner und Unterordner rückwärts durchsuchen Allgemeine Java-Themen 3
B Swing In JAR Ordner durchsuchen Allgemeine Java-Themen 2
B Ordner öffnen mittels Java in Linux-Umgebung Allgemeine Java-Themen 7
P Input/Output Ordner löschen --> geht nicht Datei --> Ja Allgemeine Java-Themen 6
I Java Ordner kopieren [Error] Allgemeine Java-Themen 6
S Dateien aus src-Ordner lesen Allgemeine Java-Themen 3
E nach dem Ordner suchen, wo .jar datei sich befindet Allgemeine Java-Themen 17
Developer_X Java FTP - Ordner auf Server erstellen Allgemeine Java-Themen 7
S Zugriffschutz auf Ordner Allgemeine Java-Themen 5
E ordner rekursiv durchsuchen Allgemeine Java-Themen 6
E Ordner rekursiv kopieren Allgemeine Java-Themen 8
J Ordner im Archiv (jar) auslesen Allgemeine Java-Themen 12
P Datei aus Ordner wird nicht gelesen Allgemeine Java-Themen 2
4 Java Ordner Allgemeine Java-Themen 27
S auf freigebene Ordner zugreifen Allgemeine Java-Themen 6
F Ordner auslesen und in Editor ausgeben Allgemeine Java-Themen 7
L Ordner in ZipDatei erstellen Allgemeine Java-Themen 3
V Der Ordner von Java ist gelöscht und ich kann es nicht neu instalieren! Allgemeine Java-Themen 2
S Ordner wechseln wie bei chdir Allgemeine Java-Themen 6
D Ordner Verpfadung Allgemeine Java-Themen 19
B ProcessBuilder: kann Ordner im home nicht finden Allgemeine Java-Themen 2
N Dateien in Ordner einsortieren Allgemeine Java-Themen 11
G Ordner für Dateien finden Allgemeine Java-Themen 3
G Globalen Programm-Ordner herausfinden Allgemeine Java-Themen 7
K settings.properties in den src-ordner schreiben Allgemeine Java-Themen 2
D Ordner mit *.properties in classpath ? Allgemeine Java-Themen 5
D eclipse: Zugriff auf Ordner per code Allgemeine Java-Themen 4
S Einen Ordner zurück von der JarDatei Allgemeine Java-Themen 6
G Programm ausführen, sobald Ordner geöffnet? Allgemeine Java-Themen 21
MQue Ordner anlegen Allgemeine Java-Themen 7
B ZIP - Problem mit dem ersten Ordner Allgemeine Java-Themen 2
M JFileChooser: Ordner anlegen Allgemeine Java-Themen 3
J Verschieben ganzer Dateien (und Ordner) Allgemeine Java-Themen 3
Q ||| Nur Dateien einlesen ohne Ordner. Allgemeine Java-Themen 6
I Diverse Files aus Ordner auslesen Allgemeine Java-Themen 10
M Ordner nach neuester Datei durchsuchen Allgemeine Java-Themen 4
D Dateien und ordner ausgabe Allgemeine Java-Themen 5
G Subclipse + svn:ignore - Ordner manuel ignorieren? Allgemeine Java-Themen 2
Y Ordner löschen Allgemeine Java-Themen 2
D Auf Laufwerk bzw. Ordner auf einem Server zugreifen Allgemeine Java-Themen 7
T Ordner überwachen Allgemeine Java-Themen 6
TheJavaKid Ordner in Zip laden Allgemeine Java-Themen 21
D Linux Link wird als Ordner interpretiert? Allgemeine Java-Themen 2
A Alle Ordner durchsuchen und Dateien finden Allgemeine Java-Themen 2
F Alle Files im Ordner nach Dateinamen durchsuchen Allgemeine Java-Themen 28
F Dateien in einem Ordner zählen Allgemeine Java-Themen 15
H Klassen aus einem Ordner zur Laufzeit laden. Allgemeine Java-Themen 6
André B. Sucher erfasst nur Ordner Allgemeine Java-Themen 10
M ganzen Ordner mit URL angeben Allgemeine Java-Themen 4
K Ordner/Dateistruktur in Objekten nachbilden Allgemeine Java-Themen 6
N Inhalte aller Txts in einem Ordner Addieren Allgemeine Java-Themen 5
N Alledateien in einem Ordner in ein Vector speichern Allgemeine Java-Themen 19
F Ordner erstellen Allgemeine Java-Themen 3
M Bilder-Ordner kann im JAR-File nicht gefunden werden Allgemeine Java-Themen 15
B dynamisches Laden aller Klassen in einem Ordner ?? Allgemeine Java-Themen 5
T Log4j integrieren, wie? Allgemeine Java-Themen 7
Messoras A*-Algorithmus integrieren Allgemeine Java-Themen 3
B suchfunktion in html integrieren Allgemeine Java-Themen 3
TheDarkRose Java in das Indicator Menü von Unity integrieren? Allgemeine Java-Themen 2
SuperSeppel13 Packete der Java Bibliothek ins eigene Prjekt integrieren Allgemeine Java-Themen 4
S java plugin in firefox/chroot_x86_32 integrieren Allgemeine Java-Themen 3
P WebBrowser in Java integrieren Allgemeine Java-Themen 26
F JDIC integrieren Allgemeine Java-Themen 4
M Javaanwendung in Windows integrieren? Allgemeine Java-Themen 2
G Suche Programm um mehrere Jars in eines zu integrieren Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben