直接从内存处理 C# 中的内存映射文件
是否可以像在Windows中直接打开文件一样直接在C#中打开内存映射文件, 举例来说,我正在创建内存映射文件。通过以下代码。
using System;
using System.IO.MemoryMappedFiles;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
MemoryMappedFile mmf = MemoryMappedFile.CreateNew("test.txt", 5);
MemoryMappedViewAccessor accessor = mmf.CreateViewAccessor();
var arun = new[] {(byte)'a', (byte)'r', (byte)'u', (byte)'n'};
for (int i = 0; i < arun.Length; i++)
accessor.Write(i, arun[i]);
Console.WriteLine("Memory-mapped file created!");
Console.ReadLine(); // pause till enter key is pressed
accessor.Dispose();
mmf.Dispose();
}
}
}
我需要直接打开该文件。是否可以像通过
Process.start("test.txt");
从另一个进程打开文件而不是通过代码读取值一样。
MemoryMappedFile mmf1 = MemoryMappedFile.OpenExisting("test.txt");
MemoryMappedViewAccessor accessor1 = mmf1.CreateViewAccessor();
var value = accessor1.ReadByte(4);
是否可以直接打开内存映射文件?请告诉我。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
内存映射文件 (.NET 4.0)
在 .NET 4 中使用内存映射文件
Memory-Mapped Files (.NET 4.0)
Working with memory mapped files in .NET 4
MemoryMappedFile.CreateNew 方法创建一个不与磁盘上的文件。所以不,你不能直接打开该文件,因为不存在该文件。 (此类文件映射对象由系统分页文件支持,如 此处描述。)
您可以使用 MemoryMappedFile.CreateFromFile 方法文件。
The MemoryMappedFile.CreateNew method creates a file mapping object that is not associated with a file on disk. So no, you can't open the file directly, because there isn't one. (Such file mapping objects are backed by the system paging file, as described here.)
You can use the MemoryMappedFile.CreateFromFile method instead if you want to associate the file mapping object with an actual file.