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 반환된 문자에 정의된 대로 경로 문자열에 유효하지 않은 문자가 문자열에 포함되어 있으면 throw ArgumentException 합니다. 예를 들어 Windows 기반 데스크톱 플랫폼에서 잘못된 경로 문자에는 따옴표("), (보다 작음), 파이프(<), greater than (>|), 백스페이스(b), null(\\0), 유니코드 문자 16~18, 20~25가 포함될 수 있습니다. 이 유효성 검사 동작은 .NET 버전마다 다릅니다.

  • 2.1 이전의 .NET Framework 및 .NET Core 버전: 인수로 경로를 사용하는 모든 Path 멤버는 잘못된 경로 문자를 검색하면 throw ArgumentException 합니다.

  • .NET Core 2.1 이상 버전: GetFullPath 문자열에 잘못된 경로 문자가 포함된 경우를 throw ArgumentException 하는 유일한 멤버입니다.

클래스의 멤버를 사용하면 파일 이름 확장명이 경로의 Path 일부인지 여부를 확인하고 두 문자열을 하나의 경로 이름으로 결합하는 등의 일반적인 작업을 빠르고 쉽게 수행할 수 있습니다.

클래스의 모든 멤버는 Path 정적이므로 경로 인스턴스 없이 호출할 수 있습니다.

참고

경로를 입력 문자열로 수락하는 멤버에서 해당 경로는 올바른 형식이어야 합니다. 그렇지 않으면 예외가 발생합니다. 예를 들어 경로가 정규화되었지만 공백으로 시작하는 경우 경로는 클래스의 메서드에서 트리밍되지 않습니다. 따라서 경로 형식이 잘못되고 예외가 발생합니다. 마찬가지로 경로 또는 경로 조합을 두 번 정규화할 수 없습니다. 예를 들어 "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)

두 문자열을 한 경로로 결합합니다.

Combine(String, String, String)

세 문자열을 한 경로로 결합합니다.

Combine(String, String, String, String)

네 문자열을 한 경로로 결합합니다.

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>)

두 경로 구성 요소를 단일 경로로 연결합니다.

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

세 개의 경로 구성 요소를 단일 경로로 연결합니다.

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

네 경로 구성 요소를 단일 경로로 연결합니다.

Join(String, String)

두 경로를 단일 경로에 연결합니다.

Join(String, String, String)

세 개의 경로를 단일 경로에 연결합니다.

Join(String, String, String, String)

네 경로를 단일 경로에 연결합니다.

Join(String[])

경로 배열을 단일 경로로 연결합니다.

TrimEndingDirectorySeparator(ReadOnlySpan<Char>)

지정된 경로의 루트를 벗어나는 후행 디렉터리 구분 기호를 하나 잘라냅니다.

TrimEndingDirectorySeparator(String)

지정된 경로의 루트를 벗어나는 후행 디렉터리 구분 기호를 하나 잘라냅니다.

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

세 개의 경로 구성 요소를 미리 할당된 단일 문자 범위에 연결하려고 시도하고 작업이 성공했는지 여부를 나타내는 값을 반환합니다.

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

두 개의 경로 구성 요소를 미리 할당된 단일 문자 범위로 연결하려고 시도하고 작업이 성공했는지 여부를 나타내는 값을 반환합니다.

적용 대상

추가 정보