Path クラス

定義

ファイルまたはディレクトリのパス情報を格納する String インスタンスで操作を実行します。 これらの操作は、プラットフォーム間で実行されます。

public ref class Path abstract sealed
public ref class Path sealed
public static class Path
public sealed class Path
[System.Runtime.InteropServices.ComVisible(true)]
public static class Path
type Path = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type Path = class
Public Class Path
Public NotInheritable Class Path
継承
Path
属性

次の例は、クラスの主要なメンバーの一部を Path 示しています。

using namespace System;
using namespace System::IO;
int main()
{
   String^ path1 = "c:\\temp\\MyTest.txt";
   String^ path2 = "c:\\temp\\MyTest";
   String^ path3 = "temp";
   if ( Path::HasExtension( path1 ) )
   {
      Console::WriteLine( "{0} has an extension.", path1 );
   }

   if (  !Path::HasExtension( path2 ) )
   {
      Console::WriteLine( "{0} has no extension.", path2 );
   }

   if (  !Path::IsPathRooted( path3 ) )
   {
      Console::WriteLine( "The string {0} contains no root information.", path3 );
   }

   Console::WriteLine( "The full path of {0} is {1}.", path3, Path::GetFullPath( path3 ) );
   Console::WriteLine( "{0} is the location for temporary files.", Path::GetTempPath() );
   Console::WriteLine( "{0} is a file available for use.", Path::GetTempFileName() );
   Console::WriteLine( "\r\nThe set of invalid characters in a path is:" );
   Console::WriteLine( "(Note that the wildcard characters '*' and '?' are not invalid.):" );
   Collections::IEnumerator^ myEnum = Path::InvalidPathChars->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Char c =  *safe_cast<Char^>(myEnum->Current);
      Console::WriteLine( c );
   }
}
using System;
using System.IO;

class Test
{
    
    public static void Main()
    {
        string path1 = @"c:\temp\MyTest.txt";
        string path2 = @"c:\temp\MyTest";
        string path3 = @"temp";

        if (Path.HasExtension(path1))
        {
            Console.WriteLine("{0} has an extension.", path1);
        }

        if (!Path.HasExtension(path2))
        {
            Console.WriteLine("{0} has no extension.", path2);
        }

        if (!Path.IsPathRooted(path3))
        {
            Console.WriteLine("The string {0} contains no root information.", path3);
        }

        Console.WriteLine("The full path of {0} is {1}.", path3, Path.GetFullPath(path3));
        Console.WriteLine("{0} is the location for temporary files.", Path.GetTempPath());
        Console.WriteLine("{0} is a file available for use.", Path.GetTempFileName());

        /* This code produces output similar to the following:
         * c:\temp\MyTest.txt has an extension.
         * c:\temp\MyTest has no extension.
         * The string temp contains no root information.
         * The full path of temp is D:\Documents and Settings\cliffc\My Documents\Visual Studio 2005\Projects\ConsoleApplication2\ConsoleApplication2\bin\Debug\temp.
         * D:\Documents and Settings\cliffc\Local Settings\Temp\8\ is the location for temporary files.
         * D:\Documents and Settings\cliffc\Local Settings\Temp\8\tmp3D.tmp is a file available for use.
         */
    }
}
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        Dim path1 As String = "c:\temp\MyTest.txt"
        Dim path2 As String = "c:\temp\MyTest"
        Dim path3 As String = "temp"

        If Path.HasExtension(path1) Then
            Console.WriteLine("{0} has an extension.", path1)
        End If

        If Path.HasExtension(path2) = False Then
            Console.WriteLine("{0} has no extension.", path2)
        End If

        If Path.IsPathRooted(path3) = False Then
            Console.WriteLine("The string {0} contains no root information.", path3)
        End If

        Console.WriteLine("The full path of {0} is {1}.", path3, Path.GetFullPath(path3))
        Console.WriteLine("{0} is the location for temporary files.", Path.GetTempPath())
        Console.WriteLine("{0} is a file available for use.", Path.GetTempFileName())

        ' This code produces output similar to the following:
        ' c:\temp\MyTest.txt has an extension.
        ' c:\temp\MyTest has no extension.
        ' The string temp contains no root information.
        ' The full path of temp is D:\Documents and Settings\cliffc\My Documents\Visual Studio 2005\Projects\ConsoleApplication2\ConsoleApplication2\bin\Debug\temp.
        ' D:\Documents and Settings\cliffc\Local Settings\Temp\8\ is the location for temporary files.
        ' D:\Documents and Settings\cliffc\Local Settings\Temp\8\tmp3D.tmp is a file available for use.

    End Sub
End Class

注釈

パスは、ファイルまたはディレクトリの場所を提供する文字列です。 パスは、必ずしもディスク上の場所を指すわけではありません。たとえば、パスはメモリ内の場所やデバイス上の場所にマップされる場合があります。 パスの正確な形式は、現在のプラットフォームによって決まります。 たとえば、一部のシステムでは、パスはドライブまたはボリューム文字で始まりますが、この要素は他のシステムには存在しません。 一部のシステムでは、ファイル パスに拡張子を含めることができます。これは、ファイルに格納されている情報の種類を示します。 ファイル名拡張子の形式はプラットフォームに依存します。たとえば、拡張機能を 3 文字に制限するシステムもあれば (小さなフラッシュ ストレージで一般的に使用される FAT16 や、光学メディアで使用される以前のバージョンの ISO 9660 など)、そうでないシステムもあります。 現在のプラットフォームでは、パスの要素を区切るために使用される文字のセットと、パスを指定するときに使用できない文字のセットも決定されます。 これらの違いにより、クラスの Path フィールドと、クラスの一部のメンバー Path の正確な動作はプラットフォームに依存します。

パスには、絶対または相対の場所の情報を含めることができます。 絶対パスは、場所を完全に指定します。現在の場所に関係なく、ファイルまたはディレクトリを一意に識別できます。 相対パスは、部分的な場所を指定します。現在の場所は、相対パスで指定されたファイルを検索する際の開始点として使用されます。 現在のディレクトリを確認するには、次を呼び出します Directory.GetCurrentDirectory

.NET Core 1.1 以降のバージョンと .NET Framework 4.6.2 以降のバージョンでは、デバイス名であるファイル システム オブジェクト ("\\?\C:\"

Windowsのファイル パス形式の詳細については、「Windows システムのファイル パス形式」を参照してください。

クラスの Path ほとんどのメンバーは、ファイル システムと対話せず、パス文字列で指定されたファイルの存在を確認しません。 Path などの ChangeExtensionパス文字列を変更するクラス メンバーは、ファイル システム内のファイルの名前には影響しません。

一部Pathのメンバーは、指定されたパス文字列の内容を検証し、メソッドから返される文字で定義されているように、パス文字列で無効な文字が文字列に含まれている場合は、an をGetInvalidPathCharsスローArgumentExceptionします。 たとえば、Windows ベースのデスクトップ プラットフォームでは、無効なパス文字には、引用符 (")、より小さい ()、パイプ (<), greater than (>|)、バックスペース (b)、null (\\0)、Unicode 文字 16 ~ 18 および 20 ~ 25 が含まれる場合があります。 この検証動作は、.NET バージョンによって異なります。

  • .NET Frameworkおよび .NET Core バージョンが 2.1 より前の場合: パスを引数として受け取るすべてのPathメンバーは、無効なパス文字を検出した場合に an をArgumentExceptionスローします。

  • .NET Core 2.1 以降のバージョンでは、 GetFullPath 文字列に無効なパス文字が含まれている場合に an ArgumentException をスローする唯一のメンバーです。

クラスのメンバーを使用すると、ファイル名拡張子がパスの Path 一部であるかどうかを判断したり、2 つの文字列を 1 つのパス名に結合したりするなど、一般的な操作をすばやく簡単に実行できます。

クラスのすべてのメンバー Path は静的であるため、パスのインスタンスを持たずに呼び出すことができます。

注意

パスを入力文字列として受け入れるメンバーでは、そのパスは整形式であるか、例外が発生する必要があります。 たとえば、パスが完全修飾されていてもスペースで始まる場合、パスはクラスのメソッドでトリミングされません。 そのため、パスの形式が正しくないため、例外が発生します。 同様に、パスまたはパスの組み合わせを 2 回完全修飾することはできません。 たとえば、"c:temp c:\\windows" もほとんどの場合、例外を発生させます。 パス文字列を受け入れるメソッドを使用する場合は、パスが整形式であることを確認します。

パスを受け入れるメンバーでは、パスはファイルを参照することも、ディレクトリだけを参照することもできます。 指定したパスは、サーバーと共有名の相対パスまたは汎用名前付け規則 (UNC) パスを参照することもできます。 たとえば、次のすべてが許容されるパスです。

  • C# では "c:\\MyDir\\MyFile.txt"、Visual Basicでは "c:\MyDir\MyFile.txt" です。

  • C# では "c:\\MyDir"、Visual Basicでは "c:\MyDir" です。

  • C# では "MyDirMySubdir\\"、Visual Basicでは "MyDirMySubDir\" です。

  • C# では "\\\\MyServerMyShare\\"、Visual Basicでは "\\MyServerMyShare\" です。

これらの操作はすべて文字列に対して実行されるため、すべてのシナリオで結果が有効であることを確認することはできません。 たとえば、メソッドは GetExtension 渡した文字列を解析し、その文字列から拡張子を返します。 ただし、これは、その拡張子を持つファイルがディスク上に存在することを意味するものではありません。

共通 I/O タスクの一覧は、 共通 I/O タスク を参照してください。

フィールド

AltDirectorySeparatorChar

階層ファイル システム編成を反映するパス文字列の、ディレクトリ レベルを区切るために使用する、プラットフォーム固有の代替文字を提供します。

DirectorySeparatorChar

階層ファイル システム編成を反映するパス文字列の、ディレクトリ レベルを区切るために使用する、プラットフォーム固有の文字を提供します。

InvalidPathChars
互換性のために残されています。
互換性のために残されています。
互換性のために残されています。

Path クラスのメンバーに渡されるパス文字列引数で指定できないプラットフォーム固有の文字配列を提供します。

PathSeparator

環境変数のパス文字列を区切るために使用するプラットフォーム固有の区切り記号。

VolumeSeparatorChar

プラットフォーム固有のボリューム区切り記号を提供します。

メソッド

ChangeExtension(String, String)

パス文字列の拡張子を変更します。

Combine(String, String)

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

Combine(String, String, String)

3 つの文字列を 1 つのパスに結合します。

Combine(String, String, String, String)

4 つの文字列を 1 つのパスに結合します。

Combine(String[])

文字列の配列を 1 つのパスに結合します。

EndsInDirectorySeparator(ReadOnlySpan<Char>)

読み取り専用スパンとして指定されているパスが、ディレクトリ区切り記号で終了するかどうかを示す値を返します。

EndsInDirectorySeparator(String)

指定されているパスが、ディレクトリ区切り記号で終了するかどうかを示す値を返します。

Exists(String)

指定されたファイルまたはディレクトリが存在するかどうかを判断します。

GetDirectoryName(ReadOnlySpan<Char>)

文字範囲で表された、指定されたパスのディレクトリ情報を返します。

GetDirectoryName(String)

指定したパスのディレクトリ情報を返します。

GetExtension(ReadOnlySpan<Char>)

読み取り専用の文字範囲で表されたファイル パスの拡張子を返します。

GetExtension(String)

指定のパス文字列の拡張子 (ピリオド "." を含む) を返します。

GetFileName(ReadOnlySpan<Char>)

読み取り専用の文字範囲で表されたファイル パスのファイル名と拡張子を返します。

GetFileName(String)

指定したパス文字列のファイル名と拡張子を返します。

GetFileNameWithoutExtension(ReadOnlySpan<Char>)

読み取り専用の文字範囲で表されたファイル パスの拡張子のないファイル名を返します。

GetFileNameWithoutExtension(String)

指定したパス文字列のファイル名を拡張子を付けずに返します。

GetFullPath(String)

指定したパス文字列の絶対パスを返します。

GetFullPath(String, String)

相対パスと完全修飾ベース パスから絶対パスを返します。

GetInvalidFileNameChars()

ファイル名に使用できない文字を含む配列を取得します。

GetInvalidPathChars()

パス名に使用できない文字を含む配列を取得します。

GetPathRoot(ReadOnlySpan<Char>)

指定した文字範囲に含まれるパスから、ルート ディレクトリ情報を取得します。

GetPathRoot(String)

指定した文字列に含まれるパスから、ルート ディレクトリ情報を取得します。

GetRandomFileName()

ランダムなフォルダー名またはファイル名を返します。

GetRelativePath(String, String)

あるパスから別のパスへの相対パスを返します。

GetTempFileName()

一意な名前を持つ 0 バイトの一時ファイルをディスク上に作成し、そのファイルの完全パスを返します。

GetTempPath()

現在のユーザーの一時フォルダーのパスを返します。

HasExtension(ReadOnlySpan<Char>)

指定された文字範囲で表されたパスにファイル名拡張子が含まれているかどうかを判断します。

HasExtension(String)

パスにファイル名の拡張子が含まれているか判定します。

IsPathFullyQualified(ReadOnlySpan<Char>)

指定された文字範囲で表されたファイル パスが、特定のドライブまたは UNC パスに固定されているかどうかを示す値を返します。

IsPathFullyQualified(String)

指定されたファイル パスが特定のドライブまたは UNC パスに固定されているかどうかを示す値を返します。

IsPathRooted(ReadOnlySpan<Char>)

ファイル パスを表す指定された文字範囲にルートが含まれているかどうかを示す値を返します。

IsPathRooted(String)

指定されたパス文字列にルートが含まれているかどうかを示す値を返します。

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>)

2 つのパス コンポーネントを単一のパスに連結します。

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

3 つのパス コンポーネントを単一のパスに連結します。

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

4 つのパス コンポーネントを単一のパスに連結します。

Join(String, String)

2 つのパスを単一のパスに連結します。

Join(String, String, String)

3 つのパスを単一のパスに連結します。

Join(String, String, String, String)

4 つのパスを単一のパスに連結します。

Join(String[])

パスの配列を連結して 1 つのパスにします。

TrimEndingDirectorySeparator(ReadOnlySpan<Char>)

指定したパスのルート以降の末尾の区切り記号をトリミングします。

TrimEndingDirectorySeparator(String)

指定したパスのルート以降の末尾の区切り記号をトリミングします。

TryJoin(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>, Span<Char>, Int32)

3 つのパス コンポーネントを 1 つの事前に割り当てられた文字スパンに連結しようとし、操作が成功したかどうかを示す値を返します。

TryJoin(ReadOnlySpan<Char>, ReadOnlySpan<Char>, Span<Char>, Int32)

2 つのパス コンポーネントを事前に割り当てられた単一の文字範囲に連結することを試み、この操作が成功したかどうかを示す値を返します。

適用対象

こちらもご覧ください