C# 内存文件写入与读取示例

 

public static void Example()
{
    // 内存文件读写可跨应用调用

    // 应用A中保存数据(应用需保持运行,若退出则创建的内存文件会释放)
    // 保存数据data至内存文件MemoryFile0001
    String data = "文件内容xx,文件内容xx";
    long lenth = MemoryFileTool.Save("MemoryFile0001", data);

    // 在应用B中调用内存文件读取
    // 从内存文件MemoryFile0001读取指定长度的数据
    String data2 = MemoryFileTool.Read("MemoryFile0001", lenth);
}
using System;
using System.Collections.Generic;
using System.IO.MemoryMappedFiles;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace sci
{
    class MemoryFileTool
    {
        /// 
        /// 写入int值到内存文件
        /// 
        /// 
        public static void Save(int data)
        {
            MemoryMappedFile memory = MemoryMappedFile.CreateOrOpen("FileName1", 512);  // 创建指定大小的内存文件,会在应用程序退出时自动释放
            MemoryMappedViewAccessor accessor1 = memory.CreateViewAccessor();           // 访问内存文件对象

            accessor1.Write(11, data);  // 在指定位置写入int值
            accessor1.Dispose();        // 
        }

        /// 
        /// 从内存文件读取int值
        /// 
        public static int Read()
        {
            MemoryMappedFile memory = MemoryMappedFile.OpenExisting("FileName1");       // 获取指定名称内存文件
            MemoryMappedViewAccessor accessor1 = memory.CreateViewAccessor();           // 访问内存文件对象

            int data = accessor1.ReadInt32(11); // 读取指定位置的数据
            accessor1.Dispose();                // 

            return data;
        }

        /// 
        /// 写字符串到内存文件
        /// 
        public static long Save(string fileName, string data)
        {
            byte[] B = Encoding.UTF8.GetBytes(data);

            MemoryMappedFile memory = MemoryMappedFile.CreateOrOpen(fileName, B.Length);    // 创建指定大小的内存文件,会在应用程序退出时自动释放
            MemoryMappedViewAccessor accessor1 = memory.CreateViewAccessor();               // 访问内存文件对象

            accessor1.WriteArray(0, B, 0, B.Length);
            accessor1.Dispose();

            return B.Length;
        }

        /// 
        /// 读取内存文件中的字符串
        /// 
        public static string Read(string fileName, long length)
        {
            MemoryMappedFile memory = MemoryMappedFile.CreateOrOpen(fileName, length);  // 创建指定大小的内存文件,会在应用程序退出时自动释放
            MemoryMappedViewAccessor accessor1 = memory.CreateViewAccessor();           // 访问内存文件对象

            var bytes = new byte[length];
            accessor1.ReadArray(0, bytes, 0, bytes.Length);
            accessor1.Dispose();

            string str = Encoding.UTF8.GetString(bytes);
            return str;
        }

    }
}

 

你可能感兴趣的:(C#,内存文件读写)