Top > プログラミング > .NET Tips> 相対パスから絶対パスを取得する、絶対パスから相対パスを取得する

相対パスから絶対パスを取得する、絶対パスから相対パスを取得する」への評価、コメント

評価

良い / 悪い = 32 / 6 (「良い」の割合 = 0.842 , 人気度 = 1.330

評価する

コメント一覧


通常のコメント
匿名 2017/05/8 (Mon) 18:04:33
相対から絶対パス変換ですが
単純に Path.Combine Path.GetFullPath ではダメなパターンがあると言うことですか?
Path.GetFullPath(Path.Combine(@"C:\Windows\System",@"..\file.text"));
NET Framework 4.5 

通常のコメント
管理人 2016/09/5 (Mon) 01:26:23
> 「URLエンコード、デコードされないようにする」項目の冒頭部分に誤記があると思います。
> 誤:相対パスを取得する時と同様に、絶対パスを取得する場合でも
> 正:絶対パスを取得する時と同様に、相対パスを取得する場合でも

修正しました。ありがとうございました。

通常のコメント
匿名 2016/06/17 (Fri) 17:07:24
「URLエンコード、デコードされないようにする」項目の冒頭部分に誤記があると思います。
誤:相対パスを取得する時と同様に、絶対パスを取得する場合でも
正:絶対パスを取得する時と同様に、相対パスを取得する場合でも

通常のコメント
管理人 2013/05/16 (Thu) 22:09:57
> UriDecode する前に、relativePath = relativePath.Replace("+", "%2B"); しておくのが吉。

「+」がデコードされないように、#?%だけをデコードするか、Uri.UnescapeDataStringでデコードするのがよさそうですね。記事を修正したいと思います。ご報告、ありがとうございました。

評価の理由
ぞう 2012/08/10 (Fri) 13:10:45
評価:良い
>UriDecode する前に、relativePath = relativePath.Replace("+", "%2B"); しておくのが吉。

がなぜ+だけかと思って調べてみましたらパーセントエンコーディングで半角スペースが+に変換されるからなんですかね?

通常のコメント
まんさく 2010/10/25 (Mon) 18:12:44
訂正:UriDecode → UrlDecode
追記:「補足」のサンプルソースについてです。確認したのは C#2008 + .NET 3.5です。

通常のコメント
まんさく 2010/10/25 (Mon) 15:11:02
ファイル名・パス名に半角 '+' が含まれていると、UrlDecode() で '+' が化けます。
UriDecode する前に、relativePath = relativePath.Replace("+", "%2B"); しておくのが吉。
他の半角文字は大丈夫な模様。

通常のコメント
三輪の牛 2010/10/19 (Tue) 16:27:56
MakeRelativeUriを使った場合、基準のURIが最後に\\で終わらない場合はファイルが基準に指定されたとみなすようです。そのためディレクトリのつもりで指定すると、1階層余分なパスが付加されてしまいます。私は基準パスの最後がコロンや\でない場合、\を付加する処理を追加して使うことにします。

評価の理由
匿名 2009/11/20 (Fri) 11:44:52
評価:良い
わかりやすいです。ありがとうございます。

評価の理由
イースト 2009/05/24 (Sun) 19:47:38
評価:良い
非常に分かりやすいです

評価の理由
ごろ 2007/11/9 (Fri) 15:00:31
評価:良い
良くやることがまとまっていて、
すごくわかりやすいです。感謝します。

通常のコメント
管理人 2007/09/19 (Wed) 03:42:35
> でもこれって、マルチバイト文字とか対応してないような気が・・・

相対パスを取得する例の方ですね。確かに、URLデコードが必要になりますね。追記させていただきます。

通常のコメント
H.Yamamoto 2007/09/18 (Tue) 17:34:01
でもこれって、マルチバイト文字とか対応してないような気が・・・

.NET Frameworkのバージョンによる違い
立石 琢己 2007/07/4 (Wed) 13:16:13
.NET Framework 2.0では、
System.IO.Path.GetFullPath("..\\file.txt")
で例外が発生してしまいました。
しかし、
Uri u1 = new Uri(System.IO.Directory.GetCurrentDirectory());
Uri u2 = new Uri(u1, "..\\file.txt");
Console.WriteLine(u2.LocalPath);
とすると絶対パスを取得できました。

#いずれにせよ、Uriクラスを使うことで解決できました。
#ありがとうございます。

.NET Frameworkのバージョンによる違い
J.S.BUFFER 2006/11/12 (Sun) 23:53:36
.NET Framework 2.0からはMakeRelativeUri()が追加されたので、MakeRelative()の使用は薦められないそうです。

<情報元>
http://msdn2.microsoft.com/ja-jp/library/system.uri.makerelative(VS.80).aspx
http://msdn2.microsoft.com/ja-jp/library/system.uri.makerelativeuri(VS.80).aspx

評価の理由
匿名 2006/09/3 (Sun) 12:29:48
評価:良い
わかりやすかったです。
これからも、参照させていただきます。

評価の理由
よっしー 2005/04/29 (Fri) 11:24:17
評価:良い
求めていた情報です。ありがとうございました。

評価の理由
おがっち 2003/12/18 (Thu) 15:41:10
評価:良い
ちょうど探していたものがあったので。。。
いつも助かってます。(^^ゞ

コメントの投稿

[説明]