ディレクトリ名をいちいち結合して、ディレクトリパスを作るのが面倒なので、メソッドを作成しました。
ディレクトリの区切り文字を書かなくて良いので、コーディングが捗るはずです。
Combineメソッドを使う
System.IO.Pathクラスには、Combine メソッドが用意されています。
Combine メソッドは、引数に渡した値同士を、パス形式で結合してくれる便利なメソッドです。
サンプルコード
// ルートディレクトリが最初から判明している場合
private string AutoCombine(string strRoot, string[] targetArray)
{
string strRet = strRoot;
foreach(string strTarget in targetArray)
{
strRet = System.IO.Path.Combine(strRet, strTarget);
}
return strRet;
}
// とりあえず結合したい場合
private string AutoCombine(string[] targetArray)
{
string strRet = string.Empty;
foreach (string strTarget in targetArray)
{
strRet = System.IO.Path.Combine(strRet, strTarget);
}
return strRet;
}
オーバーロードしてるので、両方同時に書いてもエラーにはなりません。コピペしてすぐに動作確認出来ます。
使い方
というわけで、実際に使ってみます。
用意するもの
先ほどのサンプルコードに加えて、用意するものは、
- ルートディレクトリ情報(任意)
- 配列
この2つです。ルートディレクトリ情報(例えば、「C:\Test」など)は任意で大丈夫です。
実装
動きを見るための画面を用意しました。

乾燥無味な画面ですが、「パス結合」ボタンをクリックすると、配列にある文字を結合して、結果をパス形式でテキストボックスに表示します。
ボタン直下のイベントに、配列を作成し、先述したサンプルコードのメソッドを呼び出します。
private void cmdPathCombine_Click(object sender, EventArgs e)
{
string[] strArray = new string[] { @"C:¥Test","SubDir1", "SubDir2", "TextFile.txt" };
this.txtResultCombine.Text = this.AutoCombine(strArray);
}
これを実行すると…。

結合できました。
ルートディレクトリ情報が最初から判明している場合は、
private void cmdPathCombine_Click(object sender, EventArgs e)
{
string[] strArray = new string[] { "SubDir1", "SubDir2", "TextFile.txt" };
this.txtResultCombine.Text = this.AutoCombine(@"C:¥Test", strArray);
}
と使えば同じ結果になります。
ちなみに、配列を Combine メソッドに渡しても同じ結果になるので、その方が楽ですね。
private void cmdPathCombine_Click(object sender, EventArgs e)
{
string[] strArray = new string[] { @"C:¥Test","SubDir1", "SubDir2", "TextFile.txt" };
this.txtResultCombine.Text = System.IO.Path.Combine(strArray);
}
やってることは同じです。
参考リンク

Path.Combine メソッド (System.IO)
文字列をパスに結合します。
.

