Top
>
プログラミング
>
.NET Tips
>
相対パスから絶対パスを取得する、絶対パスから相対パスを取得する
「相対パスから絶対パスを取得する、絶対パスから相対パスを取得する」への評価、コメント
評価
評価する
コメント一覧
コメントの投稿
「
相対パスから絶対パスを取得する、絶対パスから相対パスを取得する
」への評価、コメント
評価
良い / 悪い = 32 / 6 (「良い」の割合 = 0.842 ,
人気度 = 1.330
)
評価する
投稿するには、JavaScriptを有効にすることが必要です。
良い
悪い
コメント一覧
コメントは最大 50 件保存されます。
RSS 2.0
通常のコメント
匿名
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
評価:良い
ちょうど探していたものがあったので。。。
いつも助かってます。(^^ゞ
コメントの投稿
投稿するには、JavaScriptを有効にすることが必要です。
人を不快にさせる内容の投稿は絶対にしないでください。悪質な投稿者には、予告なく罰則(閲覧禁止やIP公開等)を科します。
この記事だけでない、全般的なご提案は「
DOBON.NETへの提案
」に、ご意見は「
お気楽掲示板
」に投稿してください。
5文字以上、1000文字以下のコメントしか投稿できません。
HTMLタグは使用できません。
コメントの種類:
[
説明
]
通常のコメント
.NET Frameworkのバージョンによる違い
お名前:
コメント(必須):
Copyright(C) DOBON!. All rights reserved.
匿名 2017/05/8 (Mon) 18:04:33
単純に Path.Combine Path.GetFullPath ではダメなパターンがあると言うことですか?
Path.GetFullPath(Path.Combine(@"C:\Windows\System",@"..\file.text"));
NET Framework 4.5