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
- Атрибуты
Примеры
В следующем примере показаны некоторые main члены 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 недопустимые символы пути могут включать кавычки (), меньше (<), больше (>), конвейер (|), 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:\\MyDir\\MyFile.txt" в C# или "c:\MyDir\MyFile.txt" в Visual Basic.
"c:\\MyDir" в C# или "c:\MyDir" в Visual Basic.
"MyDir\\MySubdir" в C# или "MyDir\MySubDir" в Visual Basic.
"\\\\MyServer\\MyShare" в C# или "\\MyServer\MyShare" в 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) |
Пытается сцепить два компонента пути в один предварительно выделенный диапазон символов и возвращает значение, показывающее, успешно ли выполнена эта операция. |
Применяется к
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по