Tim Bureck
Erfahrenes Mitglied
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:
NFZ.IDENTIFIER ist folgendermaßen deklariert:
So, nun zum Problem: In der Datei steht folgendes (nur der hier relevante Anfang):
bzw.
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):
und folglich wird auch die Exception geworfen. Wie kann ich nun richtig einlesen, sodass das gewünscht Ergebnis erzielt wird?
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:
C#:
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:
C#:
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:
1A46 5AC7
bzw.
Code:
.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:
359
und folglich wird auch die Exception geworfen. Wie kann ich nun richtig einlesen, sodass das gewünscht Ergebnis erzielt wird?