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

本文关键字:内存 映射 文件 处理 | 更新日期: 2023-09-27 18:21:02

是否可以像在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);    

是否可以直接打开内存映射文件?请告诉我。

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

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

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

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

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

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