Probleme mit Streams

  • Themenstarter Themenstarter bygones
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
B

bygones

Gast
Hiho,

folgendes Problem:

Ich habe eine binäre Datei, deren Inhalt ich aktualisieren will. Meine Idee ist, mit einem DataInputStream die Datei zu lesen und an den betreffenden Stellen die neuen Informationen zu schreiben.

Mein Problem ist nun, dass ich dazu ja 2 Streams brauche (in und out), die aber auf der gleichen Datei arbeiten, ergo wird mir das lesen dann falsche informationen liefern, wenn ich in die Datei schreib, während ich byteweise auslese.

Getrennte Dateien zu nehmen ist aber auch dumm, da ich nicht will, dass nach jedem Update 2 Dateien rumliegen (die ursprungsdatei und die neue). Methode aus der File klasse um zu löschen sind mir zu unsicher, da es nicht klar ist, wo die Datei erstellt wird und somit nicht klar ist, ob die nötigen Rechte vorhanden sind.

Des weiteren handelt es sich hier um Dateien im hohen GB Bereich, also würde ich doppelte Dateien gerne vermeiden.

Gibts irgendeinen Trick, schlussendlich nur eine Datei zu haben ?

Der Plan B ist natürlich die Informationen komplett neu zu holen und somit einfach die alte Datei überschreiben - was aber auch nicht so tolle wäre ....

THX
deathbyaclown
 
wiewärs mit nem RandomAccessFile,damitkansnt du gleichzeitig lesen und schreiben, kannst unwichtige daten überspringen und brauchst auch nich alles neuzuschreiben.
gibs nur vielleicht wieder probleme mit den formaten oder so?
 
mit den formaten sollte es keine probleme geben, da ich nicht mehr den ObjectxxxStream nutze, der DataOutput bzw RandomAccessFile schreiben ja keine zusätzlichen infos rein.

das Problem, was wahr. nicht zu umgehen ist aber, dass ich ja, wenn ich was neues in die Datei schreibe, alte Information lösche. Ich kann ja nicht etwas zusätzlich einfügen und alles was danach kommt wird sozusagen verschoben....
 
deathbyaclown hat gesagt.:
mit den formaten sollte es keine probleme geben, da ich nicht mehr den ObjectxxxStream nutze, der DataOutput bzw RandomAccessFile schreiben ja keine zusätzlichen infos rein.

das Problem, was wahr. nicht zu umgehen ist aber, dass ich ja, wenn ich was neues in die Datei schreibe, alte Information lösche. Ich kann ja nicht etwas zusätzlich einfügen und alles was danach kommt wird sozusagen verschoben....

alles kann man nicht haben: du willst was ändern, hast aber Angst davor, zwei Dateien zu haben? und gleichzeitig Angst alte Informationen zu löschen??

hmm

und das mit dem Einfügen ist essig, da musst du wohl eine Kopie davon machen


Der Plan B ist natürlich die Informationen komplett neu zu holen und somit einfach die alte Datei überschreiben - was aber auch nicht so tolle wäre ....
unter Linux nimm rsync!
da gibts ausgefuchste Mechanismen wie man "nur die Änderungen" übertragen kann...

http://www.samba.org/rsync/tech_report/

http://jarsync.sourceforge.net/
 
jo war klar, dass das irgendwie nicht so geht wie man es sich erhofft...

keine ahnung warum ich hoffte das gehe ^^

rsync ist im Grunde auch nix. Dann muss ich wohl das file neu erstellen lassen....

danke euch
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben