File.Exists返回true,OpenExisting因DirectoryNotFoundException失败

时间:2014-09-02 14:12:25

标签: c# .net

我想在系统卷信息子文件夹中打开内存映射文件。我知道并在资源管理器中看到它存在,并且路径是正确的(它是从资源管理器复制粘贴的),而且该路径的File.Exists返回true,但MemoryMappedFile.OpenExisting失败并带有DirectoryNotFoundException。为什么? (我拥有系统卷信息文件夹和子文件夹的所有权利。)

一些代码:

const string filePath = @"C:\\System Volume Information\\Foo\\2.ext";

bool exists = File.Exists(filePath); //is true
using (MemoryMappedFile bitmapFile = MemoryMappedFile.OpenExisting(filePath, MemoryMappedFileRights.Read)) //Throws DirectoryNotFoundException
{
    ...
}

2 个答案:

答案 0 :(得分:3)

您需要使用MemoryMappedFile.CreateFromFile("yourPathToFileInDisk", FileMode.Open,"WhateverName")打开您需要的文件。 MemoryMappedFile.OpenExisting("WhateverName")尝试打开已存在的内存映射文件。

答案 1 :(得分:1)

我还没有使用这些API,但我相信您需要先将文件映射到内存。试试MemoryMappedFile.CreateFromFile