ルートディレクトリからのパスかどうかによって動作が変わるCombineメソッドとは異なり、Joinメソッドはパスの階層構造の解釈は行わず、単にパスの断片として結合を行います。 必要に応じてディレクトリ区切り文字が自動的に補われる点はCombineメソッドと同様です。

Joinメソッドでは結合された結果がパスとして正しい形式になるとは限らないため、常に正しい形式のパスとして結合したい場合はCombineメソッドを使用します。

Path.Joinメソッドでパスの断片を結合する
Imports System
Imports System.IO

Class Sample
  Shared Sub Main()
    ' Path.Joinメソッドでパスの断片を結合する (比較として、Path.Combineメソッドでの結合も行う)

    ' Windows形式のパス
    Console.WriteLine("Join:    {0}", Path.Join   ("E:\", "\dir", "file.txt")) ' それぞれ単にパスの一部として結合される
    Console.WriteLine("Combine: {0}", Path.Combine("E:\", "\dir", "file.txt")) ' "\dir"からのパスとして結合される
    Console.WriteLine()

    Console.WriteLine("Join:    {0}", Path.Join   ("E:\", "\dir", "\subdir\", "file.txt")) ' それぞれ単にパスの一部として結合される
    Console.WriteLine("Combine: {0}", Path.Combine("E:\", "\dir", "\subdir\", "file.txt")) ' "\subdir"からのパスとして結合される
    Console.WriteLine()

    Console.WriteLine("Join:    {0}", Path.Join   ("E:", "C:", "subdir", "file.txt")) ' それぞれ単にパスの一部として結合される
    Console.WriteLine("Combine: {0}", Path.Combine("E:", "C:", "subdir", "file.txt")) ' "C:\"からのパスとして結合される
    Console.WriteLine()

    ' UNIX形式のパス
    Console.WriteLine("Join:    {0}", Path.Join   ("/root", "/dir", "file.txt")) ' それぞれ単にパスの一部として結合される
    Console.WriteLine("Combine: {0}", Path.Combine("/root", "/dir", "file.txt")) ' "/dir"からのパスとして結合される
    Console.WriteLine()

    Console.WriteLine("Join:    {0}", Path.Join   ("/root", "/dir", "/subdir/", "file.txt")) ' それぞれ単にパスの一部として結合される
    Console.WriteLine("Combine: {0}", Path.Combine("/root", "/dir", "/subdir/", "file.txt")) ' "/subdir"からのパスとして結合される
    Console.WriteLine()
  End Sub
End Class
実行結果
Join:    E:\\dir\file.txt
Combine: \dir\file.txt

Join:    E:\\dir\subdir\file.txt
Combine: \subdir\file.txt

Join:    E:\C:\subdir\file.txt
Combine: C:\subdir\file.txt

Join:    /root/dir\file.txt
Combine: /dir\file.txt

Join:    /root/dir/subdir/file.txt
Combine: /subdir/file.txt

実行結果
Join:    E:\/\dir/file.txt
Combine: E:\/\dir/file.txt

Join:    E:\/\dir/\subdir\/file.txt
Combine: E:\/\dir/\subdir\/file.txt

Join:    E:/C:/subdir/file.txt
Combine: E:/C:/subdir/file.txt

Join:    /root/dir/file.txt
Combine: /dir/file.txt

Join:    /root/dir/subdir/file.txt
Combine: /subdir/file.txt

MENTAにてテキストチャットによるサポートを行っています。 問題の解決法をお探しの方や.NET/C#を学習中の方はどうぞご利用ください。