【发布时间】:2024-05-04 05:10:03
【问题描述】:
在这个问题中,
有一个问题,(int)stream.Length 没有给我正确的长度,而是给出了使用的内部缓冲区的大小!我需要刷新这个问题,因为它非常紧迫。
主要问题是:
我需要类似于 ReadToEnd 或 ReadAllBytes 的东西来阅读所有 如果我使用 MappedViewAccessor 的 MemoryMappedFile 的内容 不知道它的大小,我该怎么做?
我已经搜索过了,我看到了这个问题,但它不是 我正在寻找的东西:
如何在 .NET 中快速从内存映射文件中读取字节?
原来的答案是:
发布
public static ReadMMFAllBytes(string fileName)
{
using (var mmf = MemoryMappedFile.OpenExisting(fileName))
{
using (var stream = mmf.CreateViewStream())
{
using (BinaryReader binReader = new BinaryReader(stream))
{
return binReader.ReadBytes((int)stream.Length));
}
}
}
}
在这个问题中:
确切的问题没有确切的答案!问题是关于标题以外的其他内容。
【问题讨论】:
-
这个答案有帮助吗? *.com/a/8613300/2258 或者 Jon Skeet 的回答:*.com/a/221941/2258
-
没用,即使文件为空,它也给了我 4096 个字节:(
-
在视图的开头也写下流长度。
-
我在这里没有看到问题。您能否编辑问题,明确您要问的内容?
-
简单地说,我需要读取内存映射文件而没有关于它的大小的先前信息,如果我在读取任何其他流时尝试读取它,它将具有错误的大小,它的大小将舍入为 X4096 数字(或最接近的系统页面大小)。
标签: c# .net ipc memory-mapped-files