Path¶
Стабильность: 2 – Стабильная
АПИ является удовлетворительным. Совместимость с NPM имеет высший приоритет и не будет нарушена кроме случаев явной необходимости.
Модуль node:path предоставляет утилиты для работы с путями к файлам и каталогам. Доступ к нему можно получить с помощью:
1 | |
Windows против POSIX¶
Работа модуля node:path по умолчанию зависит от операционной системы, на которой запущено приложение Node.js. В частности, при работе в операционной системе Windows модуль node:path будет считать, что используются пути в стиле Windows.
Поэтому использование path.basename() может дать разные результаты на POSIX и Windows:
На POSIX:
1 2 | |
В Windows:
1 2 | |
Для достижения последовательных результатов при работе с путями к файлам Windows в любой операционной системе используйте path.win32:
В POSIX и Windows:
1 2 | |
Для достижения согласованных результатов при работе с путями к файлам POSIX в любой операционной системе используйте path.posix:
В POSIX и Windows:
1 2 | |
В Windows Node.js следует концепции рабочего каталога на каждом диске. Такое поведение можно наблюдать при использовании пути к диску без обратной косой черты. Например, path.resolve('C:\') потенциально может вернуть другой результат, чем path.resolve('C:'). Для получения дополнительной информации смотрите эту страницу MSDN.
path.basename(path[, suffix])¶
Метод path.basename() возвращает последнюю часть path, аналогично команде Unix basename. Заглавные разделители каталогов игнорируются.
1 2 3 4 5 | |
Хотя Windows обычно обрабатывает имена файлов, включая расширения файлов, без учета регистра, эта функция этого не делает. Например, C:\foo.html и C:\foo.HTML ссылаются на один и тот же файл, но basename рассматривает расширение как строку, чувствительную к регистру:
1 2 3 4 5 | |
Ошибка TypeError возникает, если path не является строкой или если указан `suffix, который не является строкой.
path.delimiter¶
Предоставляет специфический для платформы разделитель путей:
;для Windows:для POSIX
Например, на POSIX:
1 2 3 4 5 | |
В Windows:
1 2 3 4 5 | |
path.dirname(path)¶
Метод path.dirname() возвращает имя каталога пути, аналогично команде Unix dirname. Заглавные разделители каталогов игнорируются, см. path.sep.
1 2 | |
Ошибка TypeError возникает, если path не является строкой.
path.extname(path)¶
Метод path.extname() возвращает расширение пути, начиная с последнего появления символа . (точка) до конца строки в последней части пути. Если в последней части path нет символа ., или если нет символов ., кроме первого символа основного имени path (см. path.basename()), возвращается пустая строка.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
Ошибка TypeError возникает, если path не является строкой.
path.format(pathObject)¶
Метод path.format() возвращает строку пути из объекта. Это противоположность path.parse().
При задании свойств для pathObject помните, что существуют комбинации, в которых одно свойство имеет приоритет над другим:
pathObject.rootигнорируется, если указаноpathObject.dir.pathObject.extиpathObject.nameигнорируются, если существуетpathObject.base.
Например, на POSIX:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | |
В Windows:
1 2 3 4 5 | |
path.isAbsolute(path)¶
Метод path.isAbsolute() определяет, является ли path абсолютным путем.
Если заданный path является строкой нулевой длины, будет возвращена false.
Например, на POSIX:
1 2 3 4 | |
В Windows:
1 2 3 4 5 6 7 | |
Ошибка TypeError возникает, если path не является строкой.
path.join([...paths])¶
Метод path.join() объединяет все заданные сегменты пути вместе, используя в качестве разделителя специфический для платформы разделитель, а затем нормализует полученный путь.
Сегменты пути нулевой длины игнорируются. Если объединенная строка пути является строкой нулевой длины, то будет возвращена .', представляющая текущий рабочий каталог.
1 2 3 4 5 | |
Ошибка TypeError возникает, если любой из сегментов пути не является строкой.
path.normalize(path)¶
Метод path.normalize() нормализует заданный путь, разрешая сегменты ... и ....
Если найдено несколько последовательных символов разделения сегментов пути (например, / на POSIX и \ или / на Windows), они заменяются одним экземпляром специфического для платформы разделителя сегментов пути (/ на POSIX и \ на Windows). Последующие разделители сохраняются.
Если path является строкой нулевой длины, возвращается '.', представляющий текущий рабочий каталог.
Например, на POSIX:
1 2 | |
В Windows:
1 2 | |
Поскольку Windows распознает несколько разделителей путей, оба разделителя будут заменены экземплярами предпочитаемого Windows разделителя (\):
1 2 | |
Ошибка TypeError возникает, если path не является строкой.
path.parse(path)¶
Метод path.parse() возвращает объект, свойства которого представляют значимые элементы пути. Заглавные разделители каталогов игнорируются, см. path.sep.
Возвращаемый объект будет иметь следующие свойства:
Например, на POSIX:
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 | |
В Windows:
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 | |
Ошибка TypeError возникает, если path не является строкой.
path.posix¶
Свойство path.posix предоставляет доступ к POSIX-специфическим реализациям методов path.
API доступен через require('node:path').posix или require('node:path/posix').
path.relative(from, to)¶
Метод path.relative() возвращает относительный путь от from к to на основе текущего рабочего каталога. Если from и to разрешаются в один и тот же путь (после вызова path.resolve() для каждого), возвращается строка нулевой длины.
Если в качестве from или to передана строка нулевой длины, то вместо строк нулевой длины будет использоваться текущий рабочий каталог.
Например, на POSIX:
1 2 3 4 5 | |
В Windows:
1 2 | |
Ошибка TypeError возникает, если from или to не является строкой.
path.resolve([...paths])¶
Метод path.resolve() преобразует последовательность путей или сегментов путей в абсолютный путь.
Заданная последовательность путей обрабатывается справа налево, с добавлением каждого последующего path, пока не будет построен абсолютный путь. Например, если задана последовательность сегментов пути: /foo, /bar, baz, вызов path.resolve('/foo', '/bar', 'baz') вернет /bar/baz, потому что 'baz' не является абсолютным путем, а '/bar' + '/' + 'baz' является.
Если после обработки всех заданных сегментов path абсолютный путь еще не сгенерирован, то используется текущий рабочий каталог.
Результирующий путь нормализуется и удаляются косые черты, если только путь не разрешается в корневой каталог.
Сегменты пути нулевой длины игнорируются.
Если сегменты path не переданы, path.resolve() вернет абсолютный путь к текущему рабочему каталогу.
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Ошибка TypeError возникает, если любой из аргументов не является строкой.
path.sep¶
Предоставляет специфический для платформы разделитель сегментов пути:
\в Windows/на POSIX
Например, на POSIX:
1 2 | |
В Windows:
1 2 | |
В Windows в качестве разделителя сегментов пути принимается как прямая косая черта (/), так и обратная косая черта (\); однако методы path добавляют только обратную косую черту (\).
path.toNamespacedPath(path)¶
Только в системах Windows, возвращает эквивалентный namespace-prefixed path для заданного path. Если path не является строкой, path будет возвращен без изменений.
Этот метод имеет смысл только в системах Windows. В POSIX-системах метод не работает и всегда возвращает path без изменений.
path.win32¶
Свойство path.win32 предоставляет доступ к Windows-специфическим реализациям методов path.
API доступен через require('node:path').win32 или require('node:path/win32').