byte[] aus Datei lesen

  • Themenstarter Themenstarter Jabba
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
J

Jabba

Gast
Hallo,

ich habe eine Datei in der mehrere Bytefolgen gespeichert sind. Die sind durch ein ":" getrennt. Jetzt würde ich gerne immer Zeichen bis zum ":" auslesen und die Daten dann weiterverarbeiten. Ideal wäre sowas wie ein StringTokenizer. Gibt es sowas ähnliches auch für Bytes, oder hat jemand ne Idee, wie ich das am besten anstelle? Ich hab schon so ziemlich überall gesucht, aber nix nützliches gefunden.

Danke schonmal.
 
Die Daten wurden verschlüsselt und sollen wieder entschlüsselt werden. Wenn ich sie nun vorübergehend in einen String umwandle funktioniert es irgendwie nicht mehr.
 
Jabba hat gesagt.:
... Wenn ich sie nun vorübergehend in einen String umwandle funktioniert es irgendwie nicht mehr.
Also wenn was in einen String gewandelt wird und dann wieder zurueck, sollt's eigentlich keine Probleme geben. ???:L
 
Also, ich verschlüsssele Strings mit Cipher/DES und speichere sie als byte[] in einer Datei, wobei die einzelnen Datensätze durch einen Doppelpunkt getrennt sind. Anschließend möchte ich die Datensätze einzeln nacheinander auslesen und wieder entschlüsseln. Am einfachsten geht das wohl mit einem StringTokenizer, aber dann werden die Daten in einen String "umgewandelt". Wenn ich jetzt wieder eine byte draus mache, wird eine NullPointerException beim entschlüsseln ausgelöst. Bleibt es von Anfang an beim byte, funktioniert alles bestens. Und da entsteht die Frage: Wie lese ich die einzelnen Byte-Datensätze am besten jeweils bis zum Doppelpunkt aus?
 
So ungefähr geht es, wenn Du byte-Arrays haben möchtest.
Code:
BufferedReader in = new BufferedReader(new FileReader(""));
ByteArrayOutputStream out = new ByteArrayOutputStream(1024);
      
int c;
while((c=in.read())!=-1) {

  if(c!=':') // Solange kein Doppelpunkt, in Puffer schreiben
    out.write(c);
  else { // Bei Doppelpunkt, byte-Array holen/bearbeiten und Puffer leeren.
    tueWasMit(out.toByteArray());
    out.reset();
  }

}
// Letzten Datensatz auch noch, wenn vorhanden
if(out.size()>0) {
  tueWasMit(out.toByteArray());
}
 
Noch eine Anmerkung dazu.
Wenn es eine große Datenmenge ist, dann wäre es sinnvoller
einen Lesepuffer zu verwenden, der auf einen Schlag gelesen
wird, statt byte für byte.
 
Also mit Dechiffrieren und so hab' ich jetzt auch noch nicht gearbeitet...
Es kommt natuerlich darauf an, wie Du die Daten in Deine Datei schreibst, aber eventuell koenntest Du die Delimiter (ein
Doppelpunkt war's doch, oder?) gleich mit verschluesseln. Dann muesste sich doch auch Dein Problem mit dem String erledigt
haben. Du koenntest dann ja einfach Deine Daten wieder entschluesseln und danach die Delimiter mit einem StringTokenizer
entfernen. Oder iss das jetzt ganz unsinnig fure Deine Anwendung...?
???:L
 
Cipher/DES und speichere sie als byte[] in einer Datei, wobei die einzelnen Datensätze durch einen Doppelpunkt getrennt sind.

hä? was?

was machst du, wenn dein Cipher im byte[] selbst einen Strichpunkt enthält???

ausserdem sollst du nicht mischen, also byte[] in ein file schreiben, dann einen String (könnte ja bei UTF-16 aus 2 Bytes bestehen usw.)
 
jo, das mit dem Doppelpunkt is schied, ich speicher so etwas immer wie folgt:
AnzahlBytesVonDaten1
Daten1
AnzahlBytesVonDaten2
Daten2
AnzahlBytesVonDaten3
Daten3
AnzahlBytesVonDaten4
Daten4
usw.
natürlich alles ohne die Zeilenumbrüche
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben