Readamemorymappedfileorknowitssizetoreaditcorrectly这道题,readamemorymappedfileoramemorymappedviewAccessoreverything在不知道它的大小有问题的情况下,(int)stream.Length没有给我正确的长度,而是给我使用的内部缓冲区的大小!我需要刷新这个问题,因为它非常紧急。主要问题是:我需要类似于ReadToEnd或ReadAllBytes的东西来使用MappedViewAccessor读取MemoryMappedFile的所有内容,如果我不知道它的大小我该怎么办?我搜索过,也看过这个问题,但这不是我要找的:Howtoquicklyreadbytesfromamemorymappedfilein.NET?旧的答案是:pubpublicstaticReadMMFAllBytes(stringfileName){using(varmmf=MemoryMappedFile.OpenExisting(fileName)){using(varstream=mmf.CreateViewStream()){using(BinaryReaderbinReader=newBinaryReader(stream)){返回binReader.ReadBytes((int)stream.Length));在这个问题中:内存映射文件的确切长度的问题没有确切的答案!问题是关于标题以外的东西。最好的方法是先发送一个固定长度的排序头,而不是只传输原始字节。这样,您读取的第一个blob是一致的长度,它为您提供了读取可变长度余数所需的信息。在最简单的情况下,您的记录可以像首先写入长度字段一样简单,然后是有效负载(您的字节)。根据您的需要,您可以将数据添加到标题中,例如记录类型、版本等。以上就是C#学习教程:读取一个内存映射文件或者知道它的大小来正确读取它共享的所有内容。如果对你有用,需要了解更多C#学习教程,希望大家多加关注——本文来自网络合集,不代表立场,如涉及侵权,请右击联系管理员删除。如需转载请注明出处:
