Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C++CLI / VB .Net / .Net-Framework » Datei Byteweise auslesen und dann "original" (zurück-)schreiben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.03.2005, 18:09 Uhr
~H. Meier
Gast


Hallo Forum,

so langsam füllt der "Neuling" das Forum mit seinen "dummen" Fragen :=( Sorry, aber evtl. lerne ich es ja noch irgendwann (die Hoffnug stirbt zuletzt...)...
Mein aktuelles Probelm: ich habe jetzt zig Versionen ausprobiert um eine Datei zu öffnen und in Dateien zu schreiben. Leider wird meistens immer nur das Lesen und Schreiben von Zeilen behandelt. Dummerweise habe ich eine Datei ohne (!) CRLF, also "nur" eine Ansammlung von Bytes, ohne irgendwelche (Zeilen-)Umbrüche.
Mein Ziel ist es nun, eine solche Datei einzulesen, in zwei Strings/Portionen zu sortieren und dann in zwei verschiedene Dateien zu schreiben. Dabei sollen keine Bytes verändert werden, d.h. wenn ich eine 256Byte große Datei mit dem Inhalt 0x00, 0x01, 0x02 ... 0xFE, 0xFF habe, möchte ich später auch nur diese Zeichen drin haben.
Mein bisheriger Code (gekürzt):


Code:
string daten = null;
string abfall= null;
long position = 0;
byte zeichen;

// ...einen Stream anzulegen...
fs_quelldatei = new FileStream (quelldatei.FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
// ...und binären Lesezugriff herzustellen
br_quelldatei = new BinaryReader (fs_quelldatei);


// ...einen Stream anzulegen
sw_zieldatei1= File.CreateText (zieldatei1.FileName);
// ...einen Stream anzulegen
sw_zieldatei2= File.CreateText (zieldatei2.FileName);

// lese vom Anfang bis zum Ende der Quelldatei
while (position < fs_quelldatei.Length)
{
   // ein Zeichen, bzw. nächstes Zeichen, einlesen
   zeichen = br_exportdatei.ReadByte();
   // wähle das Ziel
   if (zeichen == '41'))   // 0x41 = A
   {
      // dem Datenstring hinzufügen
      daten += zeichen;
   }
   else
   {
      // erst mal verwerfen => dem Abfallstring hinzufügen
      abfall += zeichen;
   }
}
sw_zieldatei1.WriteLine (daten);
sw_zieldatei2.WriteLine (abfall);



Das Einlesen scheint einwandfrei zu laufen, das Schreiben allerdings nicht! Die Bytes bis 0x7F (also 127 dezimal) funktionieren einwandfrei, alles darüber wird aber falsch zurückgeschrieben (z.B. als 0xC280). Nehme mal stark an, da "läuft" das Byte über, weil noch irgendwo ein Vorzeichen drin ist. Aber wo?
Habe jetzt schon zig Versionen druch, aber so geht es nicht :=(
Wie liest man eine Datei Byte für Byte ein, um dann einzelne Bytes zu vergleichen und diese dann (in Strings) zu sammeln und sie abschließend am Ende in eine Datei zu schreiben, bzw. wie macht man es richtig, oder wo ist mein Fehler?

Gruß und Danke,

Hans
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C++CLI / VB .Net / .Net-Framework ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: