フォルダ(ディレクトリ)名やファイル名を連結する際は末尾の区切り文字を意識する必要がありますが、System.IO.Path.Combine()を使用すると簡単に結合できます。
サンプルコード
-
C#
string combinePath = System.IO.Path.Combine(path1, path2);
-
VB.NET
Dim combinePath As String = System.IO.Path.Combine(path1, path2)
Combineの挙動
- nullを指定すると例外が発生します。
- path1の末尾が区切り文字の場合、単純にpath2を連結します。
- path1の末尾が区切り文字以外の場合、path1とpath2の間に区切り文字が追加されます。
- path1が空の文字列の場合、path2が返ります。
- path2が空の文字列の場合、path1が返ります。(区切り文字は追加されません)
- path2が絶対パスの場合、path2が返ります。
- path1またはpath2に パスで使えない文字を含むと例外が発生します。
path1 | path2 | 結果 |
---|---|---|
(空文字列) | (空文字列) | (空文字列) |
c:\test | (空文字列) | c:\test |
c:\test\ | (空文字列) | c:\test\ |
c:\test | test2 | c:\test\test2 |
c:\test\ | test2 | c:\test\test2 |
c:\test | test2.txt | c:\test\test2.txt |
c:\test\ | test2.txt | c:\test\test2.txt |
.\test | test2 | .\test\test2 |
.\test\ | test2 | .\test\test2 |
.\test | test2.txt | .\test\test2.txt |
.\test\ | test2.txt | .\test\test2.txt |
.\test | c:\test\ | c:\test\ |
.\test | c:\test\memo.txt | c:\test\memo.txt |
.\test | c:\test\memo.txt\ | c:\test\memo.txt\ |
.\test | \\networkPC\test | \\networkPC\test |
.\test | \\networkPC\test\ | \\networkPC\test\ |
.\test | \\networkPC\test\memo.txt | \\networkPC\test\memo.txt |
.\test | \\networkPC\test\memo.txt\ | \\networkPC\test\memo.txt\ |
c:\test\memo.txt | c:\ | c:\ |
パスで使えない文字を含む | パスで使えない文字を含まない | 例外「System.ArgumentException "パスに無効な文字が含まれています。"」 |
パスで使えない文字を含まない | パスで使えない文字を含む | 例外「System.ArgumentException "パスに無効な文字が含まれています。"」 |
検証環境
- Microsoft Visual Studio 2008 Version 9.0.30729.4462 QFE Edition: Professional
- Microsoft .NET Framework Version 3.5 SP1
- Microsoft Windows 7 Professional Service Pack 1 (Microsoft Windows NT 6.1 (7601))