C#File.exists返回false

时间:2016-11-26 07:30:58

标签: c# onedrive

我有一个打开数据库的程序,该数据库的路径是:

private static string strDefaultDB2 = @"C:\Users\" + Environment.UserName + @"\OneDrive\TIME FILE\MyName\TimeFile.accdb";

我尝试过的所有计算机都可以正常访问它,除了一个,它还可以访问OneDrive但是当我运行代码时文件不存在...如果我输入代码生成的路径是这样的:

C:\Users\UserName\OneDrive\TIME FILE\MyName\TimeFile.accdb

在资源管理器中,它会立即打开数据库。我不确定为什么它无法在这台机器上找到数据库...我也尝试以管理员身份运行它但是没有改变任何东西

这是执行的代码:

 if (!System.IO.File.Exists(doesFileExist))
            {

                Polaris.Polaris.log("The Path " + doesFileExist + " Does Not Exist!");

                runWindowDB();


            }

如果我尝试对文件进行重命名,则会抛出异常:“找不到文件[path]”

如果我尝试打开数据库:“[path]不是有效路径”

我不明白,因为这条路径在每台PC上都有空格,唯一改变的是用户名。资源管理器打开文件,以便路径正确。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:0)

你得到例外吗?你能读/写这个文件吗? 你在字符串中有一个空格,我觉得不管怎么说都不错。

来自官方文档link

  

如果path描述目录,则此方法返回false。尾随   在确定是否有空格从路径参数中删除   文件存在。

     

如果在尝试时发生任何错误,则Exists方法返回false   确定指定的文件是否存在。这种情况可能发生   引发异常,例如传递带有无效的文件名   字符或字符太多,磁盘失败或丢失,或者是否   调用者没有读取文件的权限。

答案 1 :(得分:0)

硬编码你认识的另一个用户用户名,从这台机器上试试,msdn提到如果字符串中有无效字符,或者路径被确定为文件夹,它将返回false,可能有一些奇怪的编码继续或病毒扫描程序拦截io。如果失败,请尝试让用户登录另一个有效的盒子,如果该文件被识别,则必须是该用户原始盒子上的环境。