是的,C# 的 MemoryMappedFile
类提供了对文件的锁定功能。你可以使用 MemoryMappedFileAccess
枚举中的 Read
、Write
和 ReadWrite
访问权限来控制锁定类型。
以下是一个简单的示例,展示了如何使用 MemoryMappedFile
进行文件锁定:
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
class Program
{
static void Main()
{
string filePath = "example.txt";
int bufferSize = 1024;
using (FileStream fileStream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
using (MemoryMappedFile memoryMappedFile = MemoryMappedFile.CreateOrOpen(fileStream, bufferSize, MemoryMappedFileAccess.ReadWrite))
{
// 获取文件锁定
using (MemoryMappedViewAccessor accessor = memoryMappedFile.CreateViewAccessor())
{
// 读取和写入数据
accessor.ReadInt32(0);
accessor.WriteInt32(42);
// 确保更改已保存到磁盘
accessor.Flush();
// 解锁文件
FileStream.Lock(fileStream.Position, bufferSize);
}
}
}
}
}
在这个示例中,我们首先创建了一个 FileStream
对象来打开或创建一个文件。然后,我们使用 MemoryMappedFile.CreateOrOpen
方法创建一个 MemoryMappedFile
对象,并指定访问权限。接下来,我们使用 CreateViewAccessor
方法获取一个内存映射视图访问器,以便读取和写入文件内容。最后,我们使用 FileStream.Lock
方法锁定文件的一部分,以确保在操作过程中其他进程无法访问该部分。