In jar-Datei schreiben aber nicht alten Inhalt überschreiben

mrno

Erfahrenes Mitglied
Hi,
ich will das mein Programm in eine vorhandene jar schreibt aber den alten inhalt nicht überschreiben.
Wenn man es bei dateien so machen will muss man dem FileOutputStream den wert true am schluss übergeben.
Code:
FileOutputStream(pfad,true);

Das funktioniert aber bei jar leider nicht.
Mein Code sieht wie folgt aus:
Code:
	String pfad;
	private FileOutputStream fos;
	private JarOutputStream jos;
public void write(String status){
	try {
		fos=new FileOutputStream(pfad,true);
		jos=new JarOutputStream(fos);
		jos.putNextEntry(new ZipEntry("status/status.txt"));
		jos.write(status.getBytes());
		jos.flush();
		jos.close();
		fos.flush();
		fos.close();
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}
Ich hoffe ihr könnt mir helfen
 
@elmato
Damals ging diese lösung bei mir. Jetzt sind es aber große dateien mehrere hundert mb. Das würde jetzt zu lange brauchen alle entry's neu zu schreiben. Ich suche diesmal eine möglichkeit etwas anzuhängen.
 
Leider bringt mich das beispiel auf der seite nicht weiter, da die auch das file komplett neu schreiben. Wenn ich das File komplet neu schreiben würde, bräuchte er jedes mal 5 minuten. Das ist einfach zu lange.
 
hmm also ich hatte dan code nicht so verstanden, der Fileinputstream bezieht sich da doch nur auf die Dateien die hinzugefügt werden sollten aber ausprobiert habe ich es nicht, schau mal ob dir dieser code weiterhilft
http://forum.java.sun.com/thread.jspa?threadID=172844&messageID=533186
ansonsten was ich so nach kurzem überfliegen gelesen habe geht es evt. nur mit Manifestfiles aber sicher bin ich mir da auch nicht :( ich schau mal ob ich es bei mir zum laufen kriege
mfg
elmato

Nachtrag
hmm, also anscheinend geht das nicht mit dem nachträglich hinzufügen hier noch ein link
http://www.inquiry.com/techtips/jguru/jguruAppletFAQ.asp?FAQ=IO&eid=68627
aber evt. kann Thomas ja noch was zaubern, oder ein mögliches Workaround wäre über den externen Jar befehl die dateien hinzuzufügen
 
Zuletzt bearbeitet:
Leider sind es auch wieder beispiele, in welchen die datei neu geschrieben wird. Hat keiner einen ansatz wie ich das problem lösen kann
 
Ich habe mich mal ein wenig schlau gemacht und das Ergebnis ist:
Es geht einfach nicht :(
Zwei Artikel in javaworld.com beschreiben das problem
http://www.javaworld.com/javaworld/jw-10-2000/jw-1027-toolbox.html das ist der zweite teil auch wieder mit rumkopieren. Mir Java eigenen mitteln ist es wohl nicht zu bewerkstelligen, also musst du entweder den code vom obrigen link nehmen, oder dir optimierungs möglichkeiten überlegen.
Ansonsten bleibt wohl nur die Möglichkeit über Runtime das jartool aufzurufen...
Vielleicht gibt es JNI Lösungen für dein Problem, also in C/C++ geproggte libs die Dateien an Jar's hängen können, da musst du mal nach suchen.
viel glück...
mfg
elmato
 
Zurück