次の方法で共有


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

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

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

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# では "MyDir\\MySubdir"、Visual Basic では "MyDir\MySubDir" です。

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

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

一般的な I/O タスクの一覧については、「一般的な I/O タスクの」を参照してください。

フィールド

AltDirectorySeparatorChar

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

DirectorySeparatorChar

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

InvalidPathChars
古い.
古い.

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

PathSeparator

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

VolumeSeparatorChar

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

メソッド

ChangeExtension(String, String)

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

Combine(ReadOnlySpan<String>)

文字列のスパンをパスに結合します。

Combine(String, String)

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

Combine(String, String, String)

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

Combine(String, String, String, String)

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

Combine(String[])

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

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 つのパス コンポーネントを 1 つのパスに連結します。

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

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

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

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

Join(ReadOnlySpan<String>)

パスのスパンを 1 つのパスに連結します。

Join(String, String)

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

Join(String, String, String)

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

Join(String, String, String, String)

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

Join(String[])

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

TrimEndingDirectorySeparator(ReadOnlySpan<Char>)

指定したパスのルートを超えて、末尾の 1 つのディレクトリ区切り記号をトリミングします。

TrimEndingDirectorySeparator(String)

指定したパスのルートを超えて、末尾の 1 つのディレクトリ区切り記号をトリミングします。

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

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

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

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

適用対象

こちらもご覧ください