2016-11-26 218 views
0

我已经打开数据库的程序,路径到该数据库是这样的:C#File.exists返回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 

在资源管理器中,它开辟了数据库马上。我不知道为什么它无法找到此一台机器上的数据库...我也尝试运行它作为管理但这并没有改变任何东西

这是执行代码:

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

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

       runWindowDB(); 


      } 

如果我尝试做的文件重命名它抛出一个异常:“无法找到文件[路径]”

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

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

任何想法?

谢谢

+3

什么异常,的InnerException你得到什么呢?用户是否可以重命名并且他的用户名不会与他的文件夹名称相同?运行该程序的用户是否有权打开该文件?什么代码完全投掷?您只需向我们展示了如何创建字符串的路径,你怎么不打开后它,帖子说,发布准确的例外你(这一切,完整的消息,异常类型等)。 –

+0

文件是否有“隐藏”属性? –

+0

您应该使用Path。合并如果路径有空格 – chris579

回答

0

你有例外吗?你可以读/写这个文件吗? 你有一个字符串中的空白,我不认为这是好的。

从官方文档link

如果path描述一个目录,此方法返回false。尾随 空间从路径参数确定所述 文件存在之前除去。

了exists如果尝试 确定是否存在指定的文件发生任何错误方法返回false。这可能发生在引发异常,如传递一个文件名与无效 字符或过多的字符,发生故障或丢失的磁盘,或者如果 呼叫者没有权限读取文件的情况下 。

+0

从1996年开始引入FAT32以来,空白** IN **路径并不是问题。 – rene

0

硬编码其他用户的用户名,你知道的工作,尝试从这台机器,msdn提到它将返回false,如果字符串中有无效的字符或如果路径被确定为一个文件夹,可能会一些奇怪的编码正在进行或病毒扫描器拦截io。如果失败,请尝试让用户登录到另一个可以正常工作的盒子上,如果该文件被识别出来,则该用户的原始盒子上必须有环境。