将字符串数据写入MemoryMappedFile

我在这里关注本教程

我很难弄清楚如何获取字符串“这是一个测试消息”存储在内存映射文件中,然后在另一侧将其拉出。 该教程说使用字节数组。 原谅我,我是新手,先尝试自己。

谢谢,凯文

##Write to mapped file using System; using System.IO.MemoryMappedFiles; class Program1 { static void Main() { // create a memory-mapped file of length 1000 bytes and give it a 'map name' of 'test' MemoryMappedFile mmf = MemoryMappedFile.CreateNew("test", 1000); // write an integer value of 42 to this file at position 500 MemoryMappedViewAccessor accessor = mmf.CreateViewAccessor(); accessor.Write(500, 42); Console.WriteLine("Memory-mapped file created!"); Console.ReadLine(); // pause till enter key is pressed // dispose of the memory-mapped file object and its accessor accessor.Dispose(); mmf.Dispose(); } } ##read from mapped file using System; using System.IO.MemoryMappedFiles; class Program2 { static void Main() { // open the memory-mapped with a 'map name' of 'test' MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("test"); // read the integer value at position 500 MemoryMappedViewAccessor accessor = mmf.CreateViewAccessor(); int value = accessor.ReadInt32(500); // print it to the console Console.WriteLine("The answer is {0}", value); // dispose of the memory-mapped file object and its accessor accessor.Dispose(); mmf.Dispose(); } } 

您可以考虑编写字符串的长度,然后编写字符串的byte []forms。
例如,如果我想写“Hello”,那么我将其转换为字节:

 byte[] Buffer = ASCIIEncoding.ASCII.GetBytes("Hello"); 

然后在写入内存映射文件时执行以下操作。

 MemoryMappedFile mmf = MemoryMappedFile.CreateNew("test", 1000); MemoryMappedViewAccessor accessor = mmf.CreateViewAccessor(); accessor.Write(54, (ushort)Buffer.Length); accessor.WriteArray(54 + 2, Buffer, 0, Buffer.Length); 

首先读取位置54并读取保存字符串长度的2个字节。 然后你可以读取那个长度的数组并将其转换为字符串。

 MemoryMappedFile mmf = MemoryMappedFile.CreateNew("test", 1000); MemoryMappedViewAccessor accessor = mmf.CreateViewAccessor(); ushort Size = accessor.ReadUInt16(54); byte[] Buffer = new byte[Size]; accessor.ReadArray(54 + 2, Buffer, 0, Buffer.Length); MessageBox.Show(ASCIIEncoding.ASCII.GetString(Buffer));