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

Комментарии

Путь — это строка, предоставляющая расположение файла или каталога. Путь не обязательно указывает на расположение на диске; Например, путь может сопоставляться с расположением в памяти или на устройстве. Точный формат пути определяется текущей платформой. Например, в некоторых системах путь может начинаться с буквы диска или тома, а этот элемент отсутствует в других системах. В некоторых системах пути к файлам могут содержать расширения, которые указывают тип информации, хранящейся в файле. Формат расширения имени файла зависит от платформы; Например, некоторые системы ограничивают расширения до трех символов (например, FAT16, которые обычно используются в меньшем хранилище флэш-памяти и более старых версиях ISO 9660, используемых на оптических носителях), а другие — нет. Текущая платформа также определяет набор символов, используемых для разделения элементов пути, и набор символов, которые нельзя использовать при указании путей. Из-за этих различий поля Path класса, а также точное поведение некоторых членов Path класса зависят от платформы.

Путь может содержать абсолютные или относительные сведения о расположении. Абсолютные пути полностью указывают расположение: файл или каталог можно однозначно определить независимо от текущего расположения. Относительные пути указывают частичное расположение: текущее расположение используется в качестве отправной точки при поиске файла, указанного с относительным путем. Чтобы определить текущий каталог, вызовите Directory.GetCurrentDirectory.

.NET Core 1.1 и более поздних версий и платформа .NET Framework 4.6.2 и более поздних версий также поддерживают доступ к объектам файловой системы, которые являются именами устройств, например "\\?\ C:\".

Дополнительные сведения о форматах пути к файлам в Windows см. в форматах пути к файлам в системах Windows.

Большинство членов Path класса не взаимодействуют с файловой системой и не проверяют наличие файла, указанного строкой пути. Path Члены класса, изменяющие строку пути, например ChangeExtension, не влияют на имена файлов в файловой системе.

Некоторые Path члены проверяют содержимое указанной строки пути и вызывают исключение ArgumentException , если строка содержит символы, недопустимые в строках пути, как определено в символах, возвращаемых методом GetInvalidPathChars . Например, на настольных платформах на основе Windows недопустимые символы пути могут включать кавычки ("), меньше (<), greater than (>), конвейер (|), backspace (\b), null (\0) и Символы Юникода от 16 до 18 и 20–25. Такое поведение проверки зависит от версий .NET:

  • В платформа .NET Framework и версиях .NET Core старше 2.1: все Path члены, которые принимают путь в качестве аргумента, вызывают исключениеArgumentException, если они обнаруживают недопустимые символы пути.

  • В .NET Core 2.1 и более поздних версиях: GetFullPath единственный элемент, который создает ArgumentException исключение, если строка содержит недопустимые символы пути.

Члены Path класса позволяют быстро и легко выполнять общие операции, такие как определение того, является ли расширение имени файла частью пути, и объединять две строки в одно имя пути.

Все члены Path класса являются статическими и поэтому могут вызываться без экземпляра пути.

Примечание

В членах, которые принимают путь в качестве входной строки, этот путь должен быть правильно сформирован или возникает исключение. Например, если путь является полным, но начинается с пробела, путь не обрезается в методах класса. Таким образом, путь имеет неправильный формат и возникает исключение. Аналогичным образом путь или сочетание путей не могут быть полностью квалифицированы дважды. Например, "c:temp c:\\windows" также вызывает исключение в большинстве случаев. Убедитесь, что пути правильно сформированы при использовании методов, которые принимают строку пути.

В членах, которые принимают путь, путь может ссылаться на файл или только каталог. Указанный путь также может ссылаться на относительный путь или UNC-путь для сервера и имени общего ресурса. Например, все следующие допустимые пути:

  • "c:\\MyDirMyFile.txt" в C# или "c:\MyDir\\\MyFile.txt" в Visual Basic.

  • "c:\\MyDir" в C# или "c:\MyDir" в Visual Basic.

  • MyDirMySubdir\\ в C# или MyDirMySubDir\ в Visual Basic.

  • MyServerMyShare\\\\\\ в C# или\\ MyServerMyShare\ в Visual Basic.

Так как все эти операции выполняются в строках, невозможно проверить, являются ли результаты допустимыми во всех сценариях. Например, метод анализирует строку, GetExtension передаваемую в нее, и возвращает расширение из этой строки. Однако это не означает, что на диске существует файл с этим расширением.

Список распространенных задач ввода-вывода см. в разделе "Общие задачи ввода-вывода".

Поля

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

Создает на диске временный пустой файл с уникальным именем и возвращает полный путь этого файла.

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)

Пытается сцепить два компонента пути в один предварительно выделенный диапазон символов и возвращает значение, показывающее, успешно ли выполнена эта операция.

Применяется к

См. также раздел