Datei in Jar ändern

DarkBioHazard

Grünschnabel
Hallo zusammen.

Ich habe mir einen IRC-Client geschrieben und bin es leid das Ding in der Entwicklungsumgebung zu betreiben, da es so gut wie fertig ist. Also hab ich alles schön zu einer Jar zusammenpacken lassen. Da liegt nun auch das Problem. Der Client speichert alle Nachrichten temporär in Textdateien. D.h. diese werden laufend geändert. Außerhalb einer Jar ist das kein Problem. Aber innerhalb wird es schwierig. Ich würde gerne das ganze Programm in einer einzelnen Jar haben, ohne, dass noch 10 Textdateien dabei sind. Weiß jemand ob/wie ich dateien in der Jar ändern kann während diese ausgeführt wird? Habe lange gesucht, aber nicht gefunden.

Ich hoffe ihr könnt mir helfen

mfg, Darkbiohazard
 
Moin,

das ist an und für sich so nicht möglich.
Eine gepackte Datei, sei es .zip .jar. oder andere, hat eine gewisse Struktur und eine diesbezüglich vorgegebene Größe, welche NUR für diese eine gepackte Datei gilt.
Willst Du also nun Dateien innerhalb dieses Jar-File abändern, wäre die Struktur als auch die Größenzuweisung zerstört.
Das funktioniert also nicht ohne weiteres.

Es bliebe Dir also nur die Möglichkeit, nach jeder Änderung der Text-Dateien ein neues Jar-File zu erstellen...
Oder die ganzen Prozesse außerhalb des Jar-File zu verlagern.

Eine bessere Lösung fällt mir - um diese Uhrzeit umso weniger - ein.

Gruß,
Xan
 
Mal ne Frage was für Textdateien sind denn das, die der Client schreibt?
Haben diese mit der Bibliothek (jar-datei) was inhaltlich zu tun?
 
Es sind ganz gewöhnliche .txt dateien, in denen die Nachrichten gespeichert werden, die vom Client empfangen und gesendet werden. Sie werden also laufend geändert. Das Ganze benötige ich für den Wechsel zwischen öffentlichen und privaten Nachrichten. Damit die Nachrichten nicht verloren gehen, werden sie in die Textdateien geschrieben und daraus wieder ausgelesen wenn man z.B. von einer privaten Nachricht einer anderen Person wieder in den öffentlichen Channel wechselt
 
Also ich finde ebenso wie Adrian_Broher, dass die Dateien die aus Deinem Programm kommen nichts in einem Jar-File verloren haben. Anders allerdings müssen dies nicht unbedint temporär Dateien sein. Ein Programm welches Dateien produziert und diese noch für einen späteren Zeitpunkt (zwichen zwei Starts) benötigt kann IMHO durchaus diese speichern allerdings in einem dafür vorgesehenen Verzeichnis. Das würde dann den Einsatz einer Datenbank ersparen. (Für eine lumpige Tabelle nur um Nachrichten zu speichern sürde ich mir das durchaus überlegen den Aufwand einer DB reinzubringen).
Anders wäre es natürlich wenn eine gewisse Transaktionssicherheit gewährleistet werden muss.
Aber insgesammt ist zu bemerken, tuhe Dir den Gefallen und versuche nicht dartige Dateien ständig in ein Jar- rein und raus zu befördern, macht wirklich keinen Sinn. Jar-Dateien sind eigentlich nur als Bibliothekn gedacht, obgleich Sie durchaus auch Resourcen, z.B. Sprach-Bundles, Bilder beinhalten dürfen, vor allem deswegen weil diese Informationen konstant sind. Bewegungsinformationen, wie Deine Texte dagegen sollte man da raushalten, ist sinnloser Performanceverlust.
 
...ergänzen kann ich dazu nur, daß JARs ändern auch immer mit einem gewissen Zeitaufwand verbunden ist, der hier fehl am Platz ist.

Für ein Datenaustausch-File könntest Du Dir auch mal die Klasse RandomAccessFile anschauen. Dort kannst Du an beliebigen Stellen schreiben und lesen, da Du ja von ständig ändernden Daten redest. Es müssen also nicht zwingend immer neue Dateien geschrieben werden.
 
Ich bin nur ein kleiner Hobby-coder :D mit jar files hatte ich bisher nicht sehr viel zu tun.

Danke für die vielen Antworten :)
Ich seh das Thema einfach mal als erledigt an
 

Neue Beiträge

Zurück