다음을 통해 공유


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 클래스의 대부분의 멤버는 파일 시스템과 상호 작용하지 않으며 경로 문자열로 지정된 파일이 있는지 확인하지 않습니다. ChangeExtension같은 경로 문자열을 수정하는 Path 클래스 멤버는 파일 시스템의 파일 이름에 영향을 주지 않습니다.

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

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

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

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#의 "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)

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

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

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

Join(ReadOnlySpan<String>)

경로 범위를 단일 경로로 연결합니다.

Join(String, String)

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

Join(String, String, String)

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

Join(String, String, String, String)

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

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)

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

적용 대상

추가 정보