Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe ein Zip archiv in dem ich eine XML Datei austauschen möchte. Ich bin bereits soweit, dass ich die Datei aus dem Archiv auslese und verändere mir ist nur nicht ganz klar wie das zurückschreiben funktioniert.
Ich habe ein Archiv das eine XML Datei enthält. Diese kann ich aus auslesen:
Code:
ZipFile zf = new ZipFile("meinarchiv.zip");
ZipEntry ze = zf.getEntry("meinxml.xml");
InputStream is = zf.getInputStream(ze);
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
String content="";
while( (line=br.readLine()) != null){
content += line;
}
So, ich hab nun meine XML Datei als String vorliegen und hab sie auch entsprechend bearbeitet.
Soweit ich das rausgefunden hab, kann ich die Quell-ArchivDatei nicht einfach benutzen um eine Datei darin zu ersetzen. Ich muss ein neues Archiv anlegen. Das hab ich so gemacht:
Code:
FileOutputStream fos = new FileOutputStream("output.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
Mit "zos.putNextEntry(e)" kann ich einen nach dem anderen "Entry" aus dem Quell-Archiv in die Zieldatei schreiben. Prima. Aber wie schreib ich da jetzt meine geänderte XML rein?
Folgendes ist mir noch nicht ganz klar:
a) Muss ich meine geänderte XML-Datei erst auf die Platte schreiben bevor ich sie in das Zielarchiv schreiben kann? Mir wär's lieb wenn ich das vermeiden könnte und das über den Speicher abwickle ...
b) der ZipOutputStream kann nur mit "write" und "putEntry" umgehen. Da bei einfachen write die Dateiinformation verloren geht muss ich also mit putEntry() arbeiten. Okay. Aber (wie) kann ich einfach so eine (Text/XML-)File, die ich bisher nur als String vorliegen habe in ein ZipEntry schreiben das dann in den ZipOutoutStream geschoben wird?