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 недопустимые символы пути могут включать кавычки ("), меньше (<), больше (>), канал (|), 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(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() |
Создает уникальный временный файл нулевого байта на диске и возвращает полный путь к нему. |
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(ReadOnlySpan<String>) |
Объединяет диапазон путей в один путь. |
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) |
Пытается объединить два компонента пути к одному предварительнораспределированному диапазону символов и возвращает значение, указывающее, выполнена ли операция успешно. |