【发布时间】:2015-12-19 07:43:55
【问题描述】:
我对@987654323@(不)工作的方式有疑问:当我使用它时,它声称该文件不存在(来自即时窗口):
filePath
"P:\\poolman\\LY21\\2015\\LY21_2015-03-25_03.xml"
File.Exists(filePath)
false
但如果我将文件路径复制/粘贴到资源管理器窗口 url(删除转义 \)它会打开文件。
所以File.Exists() 声称现有文件不存在,这让我很烦。
这与 length of the path(即 43)无关,FileInfo 并不是建议 here 的更好选择。
这是FileInfo 检查的结果:
var f = new FileInfo(filePath);
{P:\poolman\LY21\2015\LY21_2015-03-25_03.xml}
base: {P:\poolman\LY21\2015\LY21_2015-03-25_03.xml}
_name: "LY21_2015-03-25_03.xml"
Directory: {P:\poolman\LY21\2015}
DirectoryName: "P:\\poolman\\LY21\\2015"
Exists: false
IsReadOnly: true
Length: '(var f = new FileInfo(filePath);).Length' threw an exception of type 'System.IO.FileNotFoundException'
Name: "LY21_2015-03-25_03.xml"
我该如何处理?
【问题讨论】:
-
做一些研究,检查文档:
true如果调用者具有所需的权限并且路径包含现有文件的名称。文件的权限是什么?您的进程以哪个用户身份运行?我猜你是在没有适当权限的 ASP.NET 上下文中运行它。 -
@PaulZahra 这是一个映射驱动器
-
这不应该被标记为建议查询的重复,因为建议的查询没有考虑到 VS 以提升的权限运行的事实,这是真正的问题,建议的重复没有讨论这个这点对我来说,这个问题选择的答案确实回答了我的问题,建议的 dup 没有回答我的问题。
-
作为一个普通人,我的 VS 在以管理员身份运行时看不到映射驱动器。我绝对不会去搜索“为什么 System.IO.File.Exists(string path) return false”。
-
@ZachSmith 这就是为什么我没有删除这个问题并且它得到了这么多的赞成票;)