2017-04-16 7 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

あなたがSystem.Uriクラスを使用することができ (実際URIです)file:/{absolute path}のようなパスで動作している場合。
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"); 

をそして、それはOSの標準パススプリッタを使用すること、Path.Combineを使用することは常に良い考えです。

+1

私はFile.OpenTextに、私はまだ、残念ながら – Kyle

+0

あなたはまったく同じ例外を取得している前と同様の加算を取得することをハードコーディング?それともファイルはおそらく存在しないのでしょうか?しかし、あなたの例外は実際には非常に面白いです - それはパスの*一部*を見つけることができないとそれは*ディレクトリ*を見つけることができなかったと言います。新しい例外(違う場合)と試したコードを入力してください。 – MetaColon

+0

そして、フォルダ – MetaColon

関連する問題