Поделиться через


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)

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

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

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