用C#直接从内存中处理内存映射文件

是否可以直接打开C#中的内存映射文件,就像直接在Windows中打开文件,例如,我正在创build内存映射文件。 通过下面的代码。

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); 

如果有可能直接打开内存映射文件? 请告诉我。

从.NET Framework版本4开始,您可以使用托管代码以本地Windows函数访问内存映射文件的相同方式访问内存映射文件,如管理MSDN Library中的Win32中的内存映射文件中所述。

  • 内存映射文件(.NET 4.0)

  • 在.NET 4中使用内存映射文件

MemoryMappedFile.CreateNew方法创建一个文件映射对象,该对象不与磁盘上的文件关联。 所以不,你不能直接打开文件,因为没有一个。 (这种文件映射对象由系统页面文件支持,如此处所述 。)

如果要将文件映射对象与实际文件相关联,则可以使用MemoryMappedFile.CreateFromFile方法。