2016-05-26 20 views
1

Wie lese ich Teile von 5Megabyte in einer Binärdatei in C#?lesen Chunks Binärdatei C#

Für jeden Brocken muss ich etwas tun ... Bitte helfen Sie mir!

+0

Wenn es eine Binärdatei ist, dann konvertieren Sie es besser nicht in eine Zeichenfolge. – Nasreddine

+0

Ja sorry ... Meine Schuld. Ich muss eine Datei .bin lesen und dann einige Bytes durch andere Bytes ersetzen ... Vielen Dank! @Nasreddine – Ben

Antwort

5

Sie können eine FileStream verwenden, um eine Binärdatei zu lesen und dann Ihre Verarbeitung darauf durchzuführen. Hier ist ein Beispiel:

using (var inFileSteam = new FileStream(@"C:\path\to\file.bin", FileMode.Open)) 
{ 
    byte[] buffer = new byte[5 * 1024 * 1024]; // 5MB in bytes is 5 * 2^20 
    int bytesRead = inFileSteam.Read(buffer, 0, buffer.Length); 

    while (bytesRead > 0) 
    { 
     for (int i = 0; i < bytesRead; i++) 
     { 
      if (buffer[i] == 0x28) // 0010 1000 in binary 
      { 
       // replace for example or any other manipulation 
       buffer[i] = 0x00; 
      } 
     } 

     outFileStream.Write(buffer, 0, bytesRead); 

     bytesRead = inFileSteam.Read(buffer, 0, buffer.Length); 
    } 
} 
+0

Danke! Aber eigentlich funktioniert das nicht, wenn ich zum Beispiel '0101000' (Random ich weiß nicht, ob das existiert oder nicht) mit 'A' oder 'B' ersetzen soll, oder? – Ben

+2

@Ben sehe meine aktualisierte Antwort. Sie müssen eine andere Datei zum Schreiben haben, wenn Sie fertig sind, können Sie die Eingabedatei durch die Ausgabedatei ersetzen, wenn Sie möchten. – Nasreddine