簡體   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