ディレクトリ名をいちいち結合して、ディレクトリパスを作るのが面倒なので、メソッドを作成しました。
ディレクトリの区切り文字を書かなくて良いので、コーディングが捗るはずです。
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)
複数の文字列を 1 つのパスに結合します。
.