WinFuture-Forum.de: Java: Strings Mit Binärdaten In Datei Speichern - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Java: Strings Mit Binärdaten In Datei Speichern


#1 Mitglied ist offline   G.I.Joe 

  • Gruppe: aktive Mitglieder
  • Beiträge: 978
  • Beigetreten: 19. September 04
  • Reputation: 0

geschrieben 04. November 2005 - 12:30

So, ich hab hier ein kleines Java-Problem:
In einem Client-Programm trudeln nach und nach Strings ein, die eigentlich die Binärdaten von beliebigen Dateien enthalten, diese sollen jetzt hintereinandergesetzt und in einer Datei abgespeichert werden. Die Frage ist nur, wie stell ich das an? Welche Klassen brauche ich dafür, Java bringt ja eine Menge Input- und Outputsachen mit, aber welche passt da?

Edit: Noch was vergessen: Da die Datei ja beliebig groß ist, sollte vielleicht gleich jeder Dateifetzen auf die Platte geschrieben werden, anstatt erst alle Teile im Speicher zusammenzusetzen und dann zu schreiben...

Edit2: Immer wenn ich mich durchgerungen habe hier nachzufragen, löss ich ein paar Minuten später das Problem selber... Die richtige Klasse ist PrintWriter, über println() lässt sich da Zeile für Zeile in die Datei schreiben...
Wenn ich es jetzt noch schaffe, dass die Datei die ankommt nicht völlig kaputt ist bin ich glücklich...

Edit3: Muss schon Spaß machen mich bei meinen Selbstgesprächen zu beobachten. Hab inzwischen das Problem endgültig gelöst:
Der Trick ist es, die Dateien beim Sender und Empfänger jeweils mit Base64 zu kodieren und dann als Folge von ASCII-Zeichen auf die Reise zu schicken. Die Klasse sun.misc.BASE64Decoder bzw sun.misc.BASE64Encoder bringt schon alles nötige mit. Auf der Client-Seite kann man dann die dekodierten Daten direkt mit einem FileoutputStream auf die Platte schreiben, da diese dann als ein Array von Bytes vorliegen...

Dieser Beitrag wurde von deglerj bearbeitet: 04. November 2005 - 13:17

Eingefügtes Bild Eingefügtes Bild
0

Anzeige



#2 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 06. November 2005 - 10:33

Warum liest du das nicht Byteweise ( Stichwort "read" ) in einen Buffer und schreibst den dann in deine Datei? Das über Strings zu machen verursacht einen riesen Overhead.
I'm mó. mo's good twin.
0

#3 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 06. November 2005 - 12:23

Zudem sind die sun.misc-Pakete interne Klassen des Frameworks und können jederzeit wieder verschwinden. Nimm lieber die Klasse Base64 aus dem Apache-Xerxes-Packet.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#4 Mitglied ist offline   G.I.Joe 

  • Gruppe: aktive Mitglieder
  • Beiträge: 978
  • Beigetreten: 19. September 04
  • Reputation: 0

geschrieben 06. November 2005 - 20:13

OK, hab die Strings bei der Dateiübertragung rausgemacht... Das läuft jetzt direkt über gepufferte In- und Outputstreams, ist wirklich schneller... Die Apache-Klassen schau ich mir mal näher an, dürtfe ja nicht allzu schwer sein das auszuwechseln...
Immerhin hab ich jetzt mein erstes, eigenes Programm das Dateien übers Netz übertragen kann *sichselberaufdieschulterklopf*
Eingefügtes Bild Eingefügtes Bild
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0