有没有可能在C#中直接打开内存映射文件,就像直接在windows中打开文件一样,例如,我正在创建内存映射文件。通过下面的代码。
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);
是否可以直接打开内存映射文件?请让我知道。
发布于 2012-01-23 16:19:10
从.NET框架版本4开始,您可以使用托管代码访问内存映射文件,访问方式与本机Windows函数访问内存映射文件的方式相同,如在MSDN Library中管理Win32中的内存映射文件中所述。
发布于 2012-01-24 10:46:16
MemoryMappedFile.CreateNew方法创建与磁盘上的文件不关联的文件映射对象。所以,你不能直接打开这个文件,因为没有这个文件。(此类文件映射对象由系统分页文件支持,如described here。)
如果要将文件映射对象与实际文件相关联,则可以改用MemoryMappedFile.CreateFromFile方法。
https://stackoverflow.com/questions/8968730
复制相似问题