分块读取二进制文件

3

在C#中如何以5 MiB块的方式读取文件?


如果是一个二进制文件,最好不要将其转换为字符串。 - undefined
是的,抱歉...是我的错。我需要读取一个 .bin 文件,然后用其他字节替换一些字节...非常感谢!@Nasreddine - undefined
1个回答

10
你可以使用一个 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);
    }
}

谢谢!但实际上,如果我想用'A'或'B'替换例如'0101000'(随机的,我不知道是否存在),这个方法是不起作用的,对吗? - undefined
3
@Ben,请查看我的更新答案。你需要另一个文件来写入,然后完成后,如果想要的话,可以用输出文件替换输入文件。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接