2009-04-17 3 views
0

XML URIをWindowsファイルパスに変換する適切な方法は何ですか?XML URIからWindowsパスを生成する

file:///C:/DirA/DirB/File.txt 

へ:出発点として

は、それが有効にすることが可能です

C:\DirA\DirB\File.txt 

...最初file:///部分文字列をドロップすることにより、(私たちが扱っているかを決定するためにそれを使用しましたローカルファイル)を作成し、元の文字列にスラッシュが現れる場所にバックスラッシュを配置します。それは良いスタートのようだが、十分ではない。スペースを%の20代を交換した後...

C:\DirA\DirB\With Spaces.txt 

:なる...

file:///C:/DirA/DirB/With%20Spaces.txt 

:たとえば、URIは次のようになります。しかし、それでも、他のものを扱うことが同様に必要な場合があるので、十分ではない。encodings。さらに、これらの文字の中には合法的なWindowsファイル名charctersでないものもありますので、Windowsファイル名でこれらのエンコーディングのうちどれが有効であるかを特定し、何か他に遭遇するとエラーにフラグを立てる必要があります。

私が忘れていることはありますか?誰も上記に拡大する気に?

答えて

1

WindowsではPathCreateFromUrl()を使用してください。

The Bizarre and Unhappy Story of File: URLsも参照してください。

+0

私はURIを回すの実際のプロセスについて詳しく説明するために誰かを期待していましたWindowsのパスに変換することができますが、この状況では私はあなたの答えを受け入れたものとしてマーキングしています。 –

2

Uri.LocalPathプロパティを使用します。

string path = new Uri("file:///C:/folder/file.txt").LocalPath; 

これは、プラットフォームに高感度に影響されるので、pathは私のWindowsマシン上"C:\folder\file.txt"です。あなたはまた、コンストラクタを使用して(ローカルファイルシステムのパスからfile URIに)他の道を行くことができ

注:

var uri = new Uri(@"C:\folder\file.txt"); 
関連する問題