首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C#中直接从内存处理内存映射文件

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

Stack Overflow用户
提问于 2012-01-23 16:18:06
回答 2查看 11.5K关注 0票数 6

有没有可能在C#中直接打开内存映射文件,就像直接在windows中打开文件一样,例如,我正在创建内存映射文件。通过下面的代码。

代码语言:javascript
运行
复制
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");

而不是通过代码读取值。

代码语言:javascript
运行
复制
 MemoryMappedFile mmf1 = MemoryMappedFile.OpenExisting("test.txt");
 MemoryMappedViewAccessor accessor1 = mmf1.CreateViewAccessor();
 var  value = accessor1.ReadByte(4);    

是否可以直接打开内存映射文件?请让我知道。

EN

回答 2

Stack Overflow用户

发布于 2012-01-23 16:19:10

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

  • Memory-Mapped Files (.NET 4.0)
  • Working with memory mapped files in .NET 4
票数 4
EN

Stack Overflow用户

发布于 2012-01-24 10:46:16

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8968730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档