繁体   English   中英

C#File.exists返回false

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM