1Danke
ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
467
467
EMPFEHLEN
-
24.08.10 15:47 #1
- Registriert seit
- Apr 2009
- Ort
- Düsseldorf (NRW)
- Beiträge
- 498
Hallöle zusammen,
ich kämpf mich gerade mit C# durch .NET, um mal was neues kennen zu lernen, und stecke gerade ein bisschen fest. Es geht darum eine Datei byteweise einzulesen. Leider kann ich die gerade nicht anhängen, da ich sie auf diesem PC nicht zur Verfügung habe, ich hoffe das hindert jetzt nicht allzu sehr...
Es geht jedenfalls erstmal um die ersten Zeichen. Folgende Methode habe ich bisher:
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
public class NFZImporter { public static NFZ Import(FileStream source) { BinaryReader reader = new BinaryReader(source); NFZ nfz = new NFZ(); String fileInfo = ""; byte inByte; // Read file information while ((inByte = reader.ReadByte()) != '\x1A') { // 1A = Strg + Z, das durchs Dateiformat vorgegebene Terminatorsymbol an dieser Stelle fileInfo += inByte; } // Check identifier String identifier = ""; identifier += reader.ReadByte() + reader.ReadByte() + reader.ReadByte(); if (identifier != NFZ.IDENTIFIER) { Console.WriteLine(identifier); throw new NFZInvalidException("..."); } return nfz; } }
NFZ.IDENTIFIER ist folgendermaßen deklariert:
Code csharp:1 2 3 4 5
public class NFZ { ... public static readonly String IDENTIFIER = "FZ\xC7"; ... }
So, nun zum Problem: In der Datei steht folgendes (nur der hier relevante Anfang):
Code :1
1A46 5AC7
bzw.
Code :1
.FZÇ
Also Strg + Z und dem Identifier, wie er auch in der NFZ-Klasse deklariert ist. Der Reader liest nun allerdings an dieser Stelle (gibt beim Console.WriteLine() aus):
Code :1
359
und folglich wird auch die Exception geworfen. Wie kann ich nun richtig einlesen, sodass das gewünscht Ergebnis erzielt wird?
-
Hallo,
also am Lesen gibt's nichts auszusetzen, das Problem liegt beim Befüllen des Strings. Da gibt es sicher viele Varianten, z.B. diese hier:
GrußCode csharp:1 2 3
identifier += (char)reader.ReadByte(); identifier += (char)reader.ReadByte(); identifier += (char)reader.ReadByte();
MCoder"The three chief virtues of a programmer are: Laziness, Impatience and Hubris."
--- Larry Wall
-
24.08.10 19:01 #3
- Registriert seit
- Apr 2009
- Ort
- Düsseldorf (NRW)
- Beiträge
- 498
Jetzt wo ich es lese, ist alles klar... Byte ist ja 'ne Zahl

Danke, so funktioniert's korrekt...
Ähnliche Themen
-
Binärdatei einlesen (byteweise)
Von soeni1987 im Forum JavaAntworten: 2Letzter Beitrag: 14.03.10, 22:13 -
[C] JPG Bild Byteweise auslesen
Von Pole17 im Forum C/C++Antworten: 7Letzter Beitrag: 17.07.09, 17:13 -
PDF-Datei byteweise einlesen - Fehlerhaft
Von Saskia21 im Forum JavaAntworten: 5Letzter Beitrag: 25.03.08, 20:37 -
IE korrekt, FF fast korrekt, Opera nicht korrekt
Von riddla im Forum CSSAntworten: 1Letzter Beitrag: 08.03.06, 16:41 -
CSV-Datei korrekt einlesen
Von DanielBodensee im Forum Delphi, Kylix, PascalAntworten: 1Letzter Beitrag: 24.04.04, 22:46





Zitieren
Login




