2016-05-26 2 views
1

Как читать куски 5 мегабайт в двоичном файле на C#?читать куски двоичный файл C#

Для каждого куска мне нужно что-то сделать ... Пожалуйста, помогите!

+0

Если это двоичный файл, лучше не преобразовывать его в строку. – Nasreddine

+0

Да, извините ... Моя вина. Мне нужно прочитать файл .bin, а затем заменить некоторые байты на другие байты ... Большое вам спасибо! @Nasreddine – Ben

ответ

5

Вы можете использовать FileStream для чтения двоичного файла, а затем выполнить обработку на нем. Вот пример:

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

Спасибо! Но на самом деле это не работает, если я хочу заменить, например, «0101000» (Random, я не знаю, существует ли это или нет) с помощью «A» или «B», правильно? – Ben

+2

@Ben см. Мой обновленный ответ. Вам нужно будет записать еще один файл, а затем, когда это будет сделано, вы можете заменить входной файл на выходной, если хотите. – Nasreddine

Смежные вопросы