【发布时间】:2012-09-10 19:57:24
【问题描述】:
当文件在互联网上时,我想使用内存映射文件来虚拟化在 Windows 上打开文件。
所以我将内存映射文件创建为:
// data that we write to the file. we will get this a tcp
var data = System.Text.Encoding.UTF8.GetBytes("Hello World");
var fileStream = new FileStream("SomeFile.txt", FileMode.Create);
using (MemoryMappedFile memoryMapped = MemoryMappedFile.CreateFromFile(fileStream, "MapName", 1024,
MemoryMappedFileAccess.ReadWrite, new MemoryMappedFileSecurity(), HandleInheritability.Inheritable, true))
{
var viewStream = memoryMapped.CreateViewStream();
viewStream.Write(data, 0, data.Length); // write hello world
}
我可以在 Windows 上读取它但不能保存它:
请注意我是如何打开文件的(同时数据在内存而不是硬盘上),但是当我尝试保存更改时却无法打开。 所以我的问题是:我怎样才能启用保存对该文件的更改,并且只是更改内存映射文件的内存中的内容而不实际尝试将任何内容保存到磁盘。
【问题讨论】:
标签: c# memory-mapped-files memory-mapping