2016-05-26 106 views
1

如何在C#中的二进制文件中读取5兆字节的块?阅读chunks二进制文件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

谢谢!但实际上,如果我想用'A'或'B'代替'0101000'(随机,我不知道这是否存在),这是行不通的,对吗? – Ben

+2

@Ben看到我更新的答案。你需要有另一个文件来写,然后完成后,你可以用输出文件替换输入文件,如果你想。 – Nasreddine