2017-04-16 100 views
1

我正在爲我想爲我的程序打開並讀入的文件存儲文件路徑。然而,當我把這個路徑到File.OpenText它的路徑添加到當前目錄中的文件路徑,然後我得到這個錯誤:通過傳遞絕對文件路徑打開文件

DirectoryNotFoundException: Could not find a part of the path "/Users/km/Desktop/MP/file:/Users/km/Downloads/PT07E.obj". 

我想要的路徑是一個我傳遞的,這是文件:/Users/km/Downloads/PT07E.obj」

有沒有辦法從加入到這條道路,我在經過最初停止File.OpenText

回答

1

如果您使用的路徑類似file:/{absolute path}(實際上是URI) 您可以使用System.Uri類。
this answer

var uri = new Uri("file:/Users/km/Downloads/PT07E.obj"); 
using (var reader = File.OpenText(uri.AbsolutePath)) 
{ 
    ... 
} 
+0

謝謝!這似乎解決了這個問題 – Kyle

1

您必須添加一個正確的絕對路徑? - 這意味着,你忘了定義驅動器(通常它是C)。所以你的路徑必須是(我會使用反斜槓):

@"C:\Users\km\Downloads\PT07E.obj" 

但是最好不要爲此使用絕對路徑。我會使用C#的specialFolder選項:

Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downlads", "PT07E.obj"); 

它總是一個好主意,用Path.Combine,使用該操作系統的標準路分離器。

+1

當我硬編碼到File.OpenText,我仍然得到另外的不幸 – Kyle

+0

您是否獲得了完全相同異常之前一樣嗎?或者文件可能不存在?但是你的異常實際上是非常有趣的 - 它說它找不到路徑的*部分,並且找不到*目錄*。請提供新的例外(如果不同)以及您嘗試的代碼。 – MetaColon

+0

並確保您有權訪問文件夾 – MetaColon