次の方法で共有


Path.Combine メソッド

2 つのパス文字列を結合します。

Public Shared Function Combine( _
   ByVal path1 As String, _   ByVal path2 As String _) As String
[C#]
public static string Combine(stringpath1,stringpath2);
[C++]
public: static String* Combine(String* path1,String* path2);
[JScript]
public static function Combine(
   path1 : String,path2 : String) : String;

パラメータ

  • path1
    第 1 のパス。
  • path2
    第 2 のパス。

戻り値

結合したパスを含む文字列。指定したパスの 1 つが長さ 0 の文字列の場合、このメソッドは別のパスを返します。 path2 に絶対パスが含まれる場合、このメソッドは path2 を返します。

例外

例外の種類 条件
ArgumentException path1 または path2 に、 InvalidPathChars で定義されている無効な文字が 1 つ以上含まれています。
ArgumentNullException path1 または path2 が null 参照 (Visual Basic では Nothing) です。

解説

path1DirectorySeparatorCharAltDirectorySeparatorChar 、または VolumeSeparatorChar で定義された有効な区切り記号で終了していない場合は、連結前に DirectorySeparatorCharpath1 に追加されます。

path2 にルートが含まれていない (たとえば、 path2 が区切り記号またはドライブ仕様で始まらない) 場合は、間に区切り記号が入った 2 つのパスの連結が返されます。 path2 にルートが含まれている場合は、 path2 が返されます。

パラメータに空白が含まれる場合は解析されないため、 path2 が " c:\\ " の場合は path2 だけを返すのではなく、これが path1 に追加されます。

ディレクトリ名やファイル名内の無効な文字は、検索ワイルドカード文字として使用できるため、これらすべてが Combine メソッドで受け入れられないと解釈されるわけではありません。たとえば、 Path.Combine("c:\\", "*.txt") は、ファイルを作成するときは無効ですが、検索文字列としては有効です。したがって、 Combine メソッドで正常に解釈されます。

このメソッドの使用例については、以下の「使用例」を参照してください。その他の一般的な I/O タスクまたは関連する I/O タスクの例を次の表に示します。

実行するタスク 参考例があるトピック
テキスト ファイルを作成する。 ファイルへのテキストの書き込み
テキスト ファイルに書き込む。 ファイルへのテキストの書き込み
テキスト ファイルから読み取る。 ファイルからのテキストの読み取り
ファイルの拡張子を取得する。 GetExtension
ファイルの絶対パスを取得する。 GetFullPath
パスからファイル名と拡張子を取得する。 GetFileName
パスからファイル名だけを取得する。 GetFileNameWithoutExtension
パスからディレクトリ名だけを取得する。 GetDirectoryName
ファイルの拡張子を変更する。 ChangeExtension
ディレクトリ内のファイルをサイズ順に並べ替える。 GetFileSystemInfos
ディレクトリが存在するかどうかを判別する。 Exists
ファイルが存在するかどうかを判別する。 Exists

使用例

[Visual Basic, C#, C++] Windows ベースのデスクトップ プラットフォーム上で Combine メソッドを使用する例を次に示します。

 
Imports System
Imports System.IO

Public Class ChangeExtensionTest
    
    
    Public Shared Sub Main()
        Dim path1 As String = "c:\temp"
        Dim path2 As String = "subdir\file.txt"
        Dim path3 As String = "c:\temp.txt"
        Dim path4 As String = "c:^*&)(_=@#'\\^&#2.*(.txt"
        Dim path5 As String = ""
        Dim path6 As String = Nothing

        CombinePaths(path1, path2)
        CombinePaths(path1, path3)
        CombinePaths(path3, path2)
        CombinePaths(path4, path2)
        CombinePaths(path5, path2)
        CombinePaths(path6, path2)
    End Sub 'Main

    Private Shared Sub CombinePaths(p1 As String, p2 As String)
        
        Try
            Dim combination As String = Path.Combine(p1, p2)
            
            Console.WriteLine("When you combine '{0}' and '{1}', the result is: {2}'{3}'", p1, p2, Environment.NewLine, combination)
        Catch e As Exception
            Console.WriteLine("You cannot combine '{0}' and '{1}' because: {2}{3}", p1, p2, Environment.NewLine, e.Message)
        End Try
        
        Console.WriteLine()
    End Sub 'CombinePaths
End Class 'ChangeExtensionTest

[C#] 
using System;
using System.IO;

public class ChangeExtensionTest {

    public static void Main() {

        string path1 = "c:\\temp";
        string path2 = "subdir\\file.txt";
        string path3 = "c:\\temp.txt";
        string path4 = "c:^*&)(_=@#'\\^&#2.*(.txt";
        string path5 = "";
        string path6 = null;

        CombinePaths(path1, path2);
        CombinePaths(path1, path3);
        CombinePaths(path3, path2);
        CombinePaths(path4, path2);
        CombinePaths(path5, path2);
        CombinePaths(path6, path2);
    }

    private static void CombinePaths(string p1, string p2) {

        try {
            string combination = Path.Combine(p1, p2);

            Console.WriteLine("When you combine '{0}' and '{1}', the result is: {2}'{3}'",
                        p1, p2, Environment.NewLine, combination);
        } catch (Exception e) {
            Console.WriteLine("You cannot combine '{0}' and '{1}' because: {2}{3}",
                        p1, p2, Environment.NewLine, e.Message);
        }

        Console.WriteLine();
    }
}

[C++] 
#using <mscorlib.dll>

using namespace System;
using namespace System::IO;

void CombinePaths(String* p1, String* p2) {
    try {
        String* combination = Path::Combine(p1, p2);
        Console::WriteLine(S"When you combine '{0}' and '{1}', the result is: {2}'{3}'",
            p1, p2, Environment::NewLine, combination);
    } catch (Exception* e) {
        Console::WriteLine(S"You cannot combine '{0}' and '{1}' because: {2}{3}",
            p1, p2, Environment::NewLine, e->Message);
    }
    Console::WriteLine();
}

int main() {

    String* path1 = S"c:\\temp";
    String* path2 = S"subdir\\file.txt";
    String* path3 = S"c:\\temp.txt";
    String* path4 = S"c:^*&)(_=@#'\\^&#2.*(.txt";
    String* path5 = S"";
    String* path6 = 0;

    CombinePaths(path1, path2);
    CombinePaths(path1, path3);
    CombinePaths(path3, path2);
    CombinePaths(path4, path2);
    CombinePaths(path5, path2);
    CombinePaths(path6, path2);
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

Path クラス | Path メンバ | System.IO 名前空間 | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み