是的,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
方法锁定文件的一部分,以确保在操作过程中其他进程无法访问该部分。