基本上,我想在实际尝试打开文件之前检查是否有权打开文件; 除非必须,否则我不想使用try/catch进行此检查.有没有我可以检查的文件访问属性?
我的方式File.Exists()(不)工作有问题:当我使用它时,它声称该文件不存在(来自立即窗口):
filePath
"P:\\poolman\\LY21\\2015\\LY21_2015-03-25_03.xml"
File.Exists(filePath)
false
Run Code Online (Sandbox Code Playgroud)
但是,如果我将文件路径复制/粘贴到资源管理器窗口URL(删除转义\),则会打开该文件.
因此File.Exists()声称现有的文件不存在会让我感到烦恼.
这不是路径的长度(43),FileInfo并不是这里建议的更好的选择.
这是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"
Run Code Online (Sandbox Code Playgroud)
我怎么处理它?
我有一个程序可以执行不同的操作,我的问题与网络映射驱动器或共享文件夹中的访问文件有关
程序可以从网络运行文件msi/exe(网络映射驱动器或共享文件夹)程序可以从网络复制文件(网络映射驱动器或共享文件夹)
在尝试运行或复制之前,如何检查文件是否可访问(如果网络断开连接或任何其他网络问题)?
是不够的 File.Exists();
这是我的代码示例:
public static bool FileIsOk(string path)
{
try
{
FileInfo finfo = new FileInfo(path);
if (finfo.Exists)
{
return true;
}
MessageBox.Show("file does not exist, or there is a problem with the network preventing access to the file!");
return false;
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
谢谢