C#で相対パスを絶対パスへ変換する方法

このQ&Aのポイント
  • C#で相対パスを絶対パスへ変換する方法について説明します。
  • C#で相対パスを絶対パスへ変換するためには、既存の関数を使用することが可能です。
  • ただし、2つの文字列を単純に足し合わせるだけでは正しい絶対パスを得ることができません。
回答を見る
  • ベストアンサー

C#で相対パスを絶対パスへ変換したい

C#で相対パスを絶対パスへ変換したい C#でプログラミングしています。 以下のようにベースとなる絶対パスと、そこからの相対パスがあるとします。 string basePath = "C:\\Projects\\Test001\\Debug\\"; string relativePath = "..\\..\\Test002\\"; 2つの文字列をただ足し合わせるだけだと、 "C:\\Projects\\Test001\\Debug\\..\\..\\Test002\\" となってしまいます。 これでも目的のパス「C:\\Projects\\Test002\\」にアクセスできますが、なにか既存の関数などを使って、「C:\\Projects\\Test002\\」というちゃんとした絶対パスを取得する方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tasoh
  • ベストアンサー率45% (19/42)
回答No.1

こういうことでしょうか? http://dobon.net/vb/dotnet/file/getabsolutepath.html

BearCave
質問者

お礼

おお、そういうことです! URLクラスなんて便利なものがあるんですね。 ありがとうございました!

関連するQ&A

  • 相対パスを絶対パスに変換したい

    こんにちは。 いつもお世話になっております。 ファイルユーティリティ関連のOCXを作成しておりまして、行き詰まってしまいました。 どうかご教示下さい。 内容はタイトルの通り、相対パスを絶対パスに変換したいというものです。 OCXの作りとして、VBから絶対パス、相対パスが区別なく渡されるものとしてどちらでも絶対パスとして内部的に扱いたく思います。 例えばD:\test\bin、D:\test\workというフォルダが存在するとして、 D:\test\bin\sample.exe内で ".\..\work"が渡された場合に OCX内部で"D:\test\work"に変換するというものです。 以下のようなコードも試してみたのですが、どうもうまく動きません。 if(_fullpath(ApsPath, RelPath, 0x100) == NULL){ //変換失敗の場合 ApsPath = RelPath; } どうかよろしくお願いします。 環境:Windows 2000 VC6.0

  • <img src="相対パス">の絶対パスへの変換

    htmlで、 <img src="相対パス">が指定されている場合、絶対パスに一括変換する方法はありますか? すなわち <base href="~"> のようなことは出来ないでしょうか?

  • 絶対パスを相対パスに

    VC++2005 Express Editionです。 ドラッグアンドドロップで受け取った(DragQueryFile)絶対パスファイル名を相対パスに変換したいのですが、良いコードサンプルなどありましたら教えてください。できればUnicodeとマルチバイトの両方に対応させたいです。 GetCurrentDirectoryでカレントディレクトリを取得してみたのですが、この場合ドライブ名が大文字なのに対し、ドラッグアンドドロップで受け取ったドライブは小文字なので、簡単にはできそうにありませんでした。 文字列処理は今まで標準関数しか使ったことがありませんが、これを機会にコードなど勉強したいと思っています。 よろしくお願いします。

  • 相対パスを絶対パスに。

    Web巡回ロボットのようなモノを作ろうと思っています。 あるURLにアクセスし、そのソースからリンクされているURLを拾って・・・・を繰り返します。 そこで、相対パスを絶対パスに簡単に変換する方法はありますか? ご教授お願いします。

    • ベストアンサー
    • Java
  • 絶対パスと相対パスはどちらがいい?

    htmlで自サイト内のリンクをつける場合、絶対パスと相対パスはどちらを使った方がいいのでしょうか? すべてのファイルが同じディレクトリにあるとして、 <a href="test.html">test</a> と <a href="http://example.com/test.html">test</a> では、SEOの効果が違ったりしますか? 教えて下さい。よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • ハイパーリンクの相対パスが絶対パスに

    Word2002でホームページを作成しては、サーバーにアップロードしています。OSはXPです。これまで何の問題もなく使えたのですが、ここ数日、相対パスのハイパーリンクが、勝手に絶対パスになってしまいます。 自分はHPで多数のリンクを張るのですが、それらを最初から入力していては面倒なので、既に作ってあるハイパーリンクをコピペし、修正する、というやり方をしています。これまで、それで問題はなかったのですが・・・。つい先日、アップロードしたHPを観覧中、リンクをクリックしたところ、何の反応もありませんでした。ステータスバーのアドレスをふと見たら、アドレスが自分のパソコン上での絶対パスになっていました(C:\・・・)。これではリンクをクリックしても何の反応もないのは当然です。自分のパソコンにあるHPを開いて、リンクを確認したところ、アドレスが絶対パスになっていました。おかしいと思って試しに既に張ってあったハイパーリンク(アドレスは相対パスで../で始まる)をコピペし、アドレスを確認すると、絶対パス(アドレスがC:\で始まる)になってしまいます。「../」だけを他のハイパーリンクからコピペして直せばこれまでどおりになりますが、上述したように自分の場合ハイパーリンクをコピベすることが多いので、コピペする度に絶対パスを相対パスに直すのは面倒ですし、そもそもこれまでそういったことをする必要がなかったのになぜ今更そういう設定になったのか、分かりません。相対パスのアドレスを、コピペしても相対アドレスのままにする設定に戻すことはできないのでしょうか。

  • Word内の絶対パス<-相対パスを簡単にする方法はありますか?

    Word内の絶対パス<-相対パスを簡単にする方法はありますか? Wordファイル(文書内のリンクとしてブックマークがあります)を受け取って、PDFに変換したのですが、リンクが開けないのでおかしいなと思ってWordのファイルを確認すると、リンクが絶対パスになっていました。  これを一発で相対パスにする方法はないでしょうか。 どうしてもということになると、手打ちで絶対パスの部分を消していくしかないでしょうか。たぶんないのだろうと思いますが、それをやる決意をするにも、「そんな方法ない」と背中を押してもらえないかと思い質問しました。  個人的には、およそリンクを設定するには外部のURLでもない限り相対パスにしていますが、あえて絶対パスにしておく人は何かメリットがあってやっているのでしょうか?たとえば、汎用性(と言えばいいのでしょうか)を低くすることでセキュリティーの効果を持たせようとか、そういうことなのでしょうか。 よろしくおねがいします。

  • 相対パスから絶対パスへ返還したい

    file:///C:/My%20Documents/IMG_1273-bbbb.jpg 以上のバナーをつくりました。リンク先はJPG画像でもよいということです。 が、この画像を右クリックしてプロパティを見ると、上記のような相対パスで表示されます。 コレを絶対パスに変換する方法はありませんか? 当方かなり知識不足ですので、できるだけ平易にお願いしたいです。

  • サイトルート相対パスと絶対パスのメリット・デメリット

    サイトルート相対パスと絶対パスのメリット・デメリット htmlでサイト内リンクを指定する際、 /test/test.html というサイトルート相対パスで指定する場合と、 http://example.com/test/test.html という絶対パスで指定する場合、 それぞれのメリット・デメリットはどういったものがあるでしょうか? ドメインは絶対に変更されないという前提の場合です。 絶対パスの方が重くなるなどのデメリットはありますか?

  • C# 2つのフォルダの相対パスを求めたいが…

    お世話になります。 二つのフォルダの相対パスを求めるメソッドを組みたいのですが、 MakeRelativeUriメソッドを使用すると実行時にどうしても InvalidOperationExceptionが出てしまいます。 下記がそのソースです。 string stPath = "C:/a/~~~"; stPath = stPath.Replace("/","\\"); Uri uri = new Uri(Path.GetFullPath(stPath + "\\")); // ディレクトリをと取得 string[] stDirectories = Directory.GetDirectories(stPath); foreach (string s in stDirectories) { string st = s.Replace("/", "\\"); Uri uri2 = new Uri(Path.GetFullPath(st + "\\")); Uri uri3 = uri2.MakeRelativeUri(uri); } 他のサイト様を拝見して、気を付けている点は、 1、相対ではなく、絶対で指定する。 2、末尾に"\\"を付ける。 3、"/"ではなく、"\\"に変更する の3点です。 それとも、MakeRelativeUriメソッドはフォルダには使えないのでしょうか? それとも、パスの中に2バイト文字が入っていてはダメ? 解決策をお願いいたします。 VC#2010Expressです。