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


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

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

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

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

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

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

  • В .NET: 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, String, String)

Объединяет четыре строки в путь.

Combine(String, String, String)

Объединяет три строки в путь.

Combine(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, String)

Возвращает абсолютный путь из относительного пути и полный базовый путь.

GetFullPath(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>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Объединяет четыре компонента пути в один путь.

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Объединяет три компонента пути в один путь.

Join(ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Объединяет два компонента пути в один путь.

Join(ReadOnlySpan<String>)

Объединяет диапазон путей в один путь.

Join(String, String, String, String)

Объединяет четыре пути в один путь.

Join(String, String, String)

Объединяет три пути в один путь.

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

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

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

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