在流读取过程中跳过字节

时间:2018-10-01 20:15:18

标签: c# streamreader

是否好奇在二进制文件流读取期间是否可以跳过字节?我试图读取32个字节,然后一直跳过接下来的6个字节,并一直重复到文件末尾。文件大小约为10mb。这是我现在遇到的错误超出范围的相关代码。

            byte[] tempBuff = new byte[FlashSize];
            int numBytesToRead = FlashSize;
            int bytesRead = 0;

            while(bytesRead <= numBytesToRead - 38{
                    ecmStream.Read(tempBuff, 0, 32);
                    ecmStream.Seek(6, SeekOrigin.Current);

            }

编辑:

感谢Henk,我也意识到我需要在每10000次读取后跳过14个字节。在这一点上,使用流进行动态解析仍然是一个不错的选择吗?

2 个答案:

答案 0 :(得分:2)

int numBytesToRead = FlashSize;
byte[] tempBuff = new byte[numBytesToRead];
int bytesRead = 0;

while(bytesRead <= numBytesToRead - 38)
{
    bytesRead += ecmStream.Read(tempBuff, bytesRead, 32);
    ecmStream.Seek(6, SeekOrigin.Current);                    
}

答案 1 :(得分:1)

您的初读错误

ecmStream.Read(tempBuff, 32, FlashSize);

应该是

ecmStream.Read(tempBuff, 0, FlashSize);

第一个int表示要读入https://docs.microsoft.com/en-us/dotnet/api/system.io.stream.read?view=netframework-4.7.2

的tempBuff中的哪个偏移量