[英]C# File.exists returns false
我有一个打开数据库的程序,该数据库的路径是这样的:
private static string strDefaultDB2 = @"C:\Users\" + Environment.UserName + @"\OneDrive\TIME FILE\MyName\TimeFile.accdb";
我尝试过的所有计算机都可以访问它,除了一台计算机,它也可以访问OneDrive,但是当我运行代码时,该文件不存在...如果输入由代码生成的路径,例如这个:
C:\Users\UserName\OneDrive\TIME FILE\MyName\TimeFile.accdb
在资源管理器中,它将立即打开数据库。 我不确定为什么它无法在这台机器上找到数据库...我也尝试过以admin身份运行它,但是没有任何改变
这是执行的代码:
if (!System.IO.File.Exists(doesFileExist))
{
Polaris.Polaris.log("The Path " + doesFileExist + " Does Not Exist!");
runWindowDB();
}
如果我尝试对文件进行重命名,则会引发异常:“找不到文件[路径]”
而且,如果我尝试打开数据库:“ [路径]不是有效路径”
我不明白,因为此路径在每台PC上都有空格,唯一改变的是用户名。 资源管理器将打开文件,因此路径正确。
有任何想法吗?
谢谢
你有例外吗? 您可以读取/写入此文件吗? 您在字符串中有一个空格,但我认为这还是不好的。
从官方文档链接 :
如果path描述目录,则此方法返回false。 在确定文件是否存在之前,将从path参数中删除尾随空格。
如果在尝试确定指定文件是否存在时发生任何错误,则Exists方法将返回false。 在引发异常的情况下可能会发生这种情况,例如传递带有无效字符或太多字符的文件名,磁盘出现故障或丢失,或者调用者无权读取文件。
硬编码另一个您知道有效的用户名,可以在这台机器上尝试使用,msdn指出,如果字符串中包含无效字符,或者如果确定路径为文件夹,则它将返回false,这可能是由于某些奇怪的编码或病毒扫描程序拦截了io。 如果失败,请尝试使用户登录到另一个可以使用的框,然后识别该文件,它必须是该用户原始框上的环境。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.