文件读取C#.NET

Bor*_*kov 0 .net c#

我有一个二进制文件.它由4条消息组成,每条消息的大小为100字节.我想再次阅读最后两条消息.我正在使用BinaryReader对象.我寻求psosition 200然后我读:BinaryReaderObject.read(charBuffer,0,10000),其中charBuffer是大的enougth.我总是得到一个读取装置总是丢失1.而不是得到200我得到199.而不是得到400我得到399.我检查并看到文件的大小是正确的,我得到的数据从正确的地方.

Thnaks,

Dan*_*ner 5

试试这段代码,看看你的文件会发生什么.

 String message = @"Read {0} bytes into the buffer.";

 String fileName = @"TEST.DAT";

 Int32 recordSize = 100;

 Byte[] buffer = new Byte[recordSize];

 using (BinaryReader br = new BinaryReader(File.OpenRead(fileName)))
 {
    br.BaseStream.Seek(2 * recordSize, SeekOrigin.Begin);

    Console.WriteLine(message, br.Read(buffer, 0, recordSize));
    Console.WriteLine(message, br.Read(buffer, 0, recordSize));
 }

 Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

我用400字节的测试文件得到以下输出.

Read 100 bytes into the buffer.
Read 100 bytes into the buffer.
Run Code Online (Sandbox Code Playgroud)

如果我寻求2 * recordSize + 1或使用399字节的文件,我得到以下输出.

Read 100 bytes into the buffer.
Read 99 bytes into the buffer.
Run Code Online (Sandbox Code Playgroud)

所以它按预期工作.