Модуль path в Node.js

Java FileВстроенные модули Node.js


Node.jspathЭтот модуль является встроенным базовым модулем, специально предназначенным для обработки путей к файлам и каталогам.

path предоставляет ряд практических методов, которые позволяют безопасно и эффективно работать с путями к файлам в различных средах операционных систем.

Зачем нужен модуль path?

Разные операционные системы используют разные разделители путей:

  • Windows использует обратные слэши\
  • Unix/Linux/macOS используют прямые слэши/

pathМодуль автоматически обрабатывает эти различия, позволяя вашему коду правильно работать на разных платформах.


Базовое использование модуля path

Импорт модуля path

const path = require('path');

Часто используемые методы

1. path.join([...paths]) - Объединение путей

Пример

const fullPath = path.join('/user', 'documents', 'file.txt');
console.log(fullPath);
// В Unix выводит: /user/documents/file.txt
// В Windows выводит: \user\documents\file.txt

2. path.resolve([...paths]) - Преобразование в абсолютный путь

Пример

const absolutePath = path.resolve('src', 'app.js');
console.log(absolutePath);
// Выводит абсолютный путь в текущем рабочем каталоге, например: /home/user/project/src/app.js

3. path.basename(path[, ext]) - Получить имя файла

Пример

console.log(path.basename('/user/docs/file.txt')); // file.txt
console.log(path.basename('/user/docs/file.txt', '.txt')); // file

4. path.dirname(path) - Получить имя каталога

Пример

console.log(path.dirname('/user/docs/file.txt')); // /user/docs

5. path.extname(path) - Получить расширение файла

Пример

console.log(path.extname('index.html')); // .html
console.log(path.extname('file')); // Пустая строка

Кроссплатформенная работа с путями

Разделители путей

  • path.sep- Разделитель пути, зависящий от платформы

    console.log(path.sep); // Windows 输出 '\', Unix 输出 '/'
  • path.delimiter- Разделитель пути, зависящий от платформы (используется в переменной среды PATH)

    console.log(path.delimiter); // Windows 输出 ';', Unix 输出 ':'

Нормализация путей

Использованиеpath.normalize(path)может нормализовать пути, обрабатывая избыточные.、..и разделители:

Пример

console.log(path.normalize('/user//docs/../file.txt')); // /user/file.txt

Разбор путей и преобразование формата

path.parse(path) - Разбирает путь в объект

Пример

const pathObj = path.parse('/user/docs/file.txt');
console.log(pathObj);
/*
{
  root: '/',
  dir: '/user/docs',
  base: 'file.txt',
  ext: '.txt',
  name: 'file'
}
*/

path.format(pathObject) — создание пути из объекта

Пример

const pathStr = path.format({
  dir: '/user/docs',
  name: 'file',
  ext: '.txt'
});
console.log(pathStr); // /user/docs/file.txt

Практические примеры применения

Пример 1: Построение кроссплатформенных путей к файлам

Пример

const configPath = path.join(__dirname, 'config', 'settings.json');
console.log(configPath);

Пример 2: Обработка файлов, загруженных пользователем

Пример

function saveUploadedFile(uploadDir, originalName) {
  const ext = path.extname(originalName);
  const baseName = path.basename(originalName, ext);
  const timestamp = Date.now();
  const newFileName = `${baseName}_${timestamp}${ext}`;
 
  return path.join(uploadDir, newFileName);
}

Пример 3: Проверка расширений файлов

Пример

function isImageFile(filename) {
  const ext = path.extname(filename).toLowerCase();
  return ['.jpg', '.jpeg', '.png', '.gif'].includes(ext);
}

Методы и свойства

Методы и свойства модуля path следующие:

МетодОписаниеПример
path.basename(path[, ext])Возвращает последнюю часть пути (имя файла). Необязательный параметрextиспользуется для удаления расширения файла.path.basename('/foo/bar/baz.txt'); // 输出: 'baz.txt'
path.dirname(path)Возвращает часть пути, соответствующую каталогу.path.dirname('/foo/bar/baz.txt'); // 输出: '/foo/bar'
path.extname(path)Возвращает расширение файла в пути.path.extname('/foo/bar/baz.txt'); // 输出: '.txt'
path.join([...paths])Объединяет несколько путей в один путь, автоматически обрабатывая разделители пути.path.join('/foo', 'bar', 'baz/asdf', 'quux', '..'); // 输出: '/foo/bar/baz/asdf'
path.resolve([...paths])Преобразует последовательность путей в абсолютный путь, обрабатывая каждый сегмент пути справа налево, пока не будет построен абсолютный путь.path.resolve('/foo/bar', './baz'); // 输出: '/foo/bar/baz'
path.normalize(path)Нормализует путь, удаляя избыточные.и.., и заменяет разделители пути в соответствии с текущей операционной системой.path.normalize('/foo/bar//baz/asdf/quux/..'); // 输出: '/foo/bar/baz/asdf'
path.isAbsolute(path)Проверяет, является ли путь абсолютным.path.isAbsolute('/foo/bar'); // 输出: true
path.relative(from, to)Возвращает изfromпуть кtoотносительный путь path.path.relative('/foo/bar/baz', '/foo/bar/qux'); // 输出: '../qux'
path.parse(path)свойства.root、dir、base、extиnameФорматирует объект path в строку пути, что являетсяpath.parse('/home/user/dir/file.txt');обратной операцией.{ root: '/', dir: '/home/user/dir', base: 'file.txt', ...}
path.format(pathObject)Предоставляет разделитель пути текущей операционной системы (POSIX —path.parse, Windows —path.format({ root: '/', dir: '/home/user/dir', base: 'file.txt' }); // 输出: '/home/user/dir/file.txt'
path.sepПредоставляет разделитель путей (разделитель между путями в переменных окружения), POSIX —'/', Windows —'\')。console.log(path.sep); // 输出: '\' (Windows) или '/' (POSIX)
path.delimiterПример:Пример;。console.log(path.delimiter); // 输出: ';' (Windows) или ':' (POSIX)

Пример

Создайте файл main.js, код выглядит следующим образом:

Пример

const path = require('path');

// Получить имя файла
console.log('File name:', path.basename('/foo/bar/baz.txt')); // Выводит: 'baz.txt'

// Получить имя каталога
console.log('Directory name:', path.dirname('/foo/bar/baz.txt')); // Вывод: '/foo/bar'

// Получить расширение
console.log('Расширение:', path.extname('/foo/bar/baz.txt')); // Вывод: '.txt'

// Объединить пути
console.log('Объединённый путь:', path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')); // Вывод: '/foo/bar/baz/asdf'

// Получить абсолютный путь
console.log('Абсолютный путь:', path.resolve('/foo/bar', './baz')); // Вывод: '/foo/bar/baz'

// Нормализовать путь
console.log('Нормализованный путь:', path.normalize('/foo/bar//baz/asdf/quux/..')); // Вывод: '/foo/bar/baz/asdf'

// Определить, является ли путь абсолютным
console.log('Является абсолютным путём:', path.isAbsolute('/foo/bar')); // Вывод: true

// Относительный путь
console.log('Относительный путь:', path.relative('/foo/bar/baz', '/foo/bar/qux')); // Вывод: '../qux'

// Разобрать путь в объект
const parsedPath = path.parse('/home/user/dir/file.txt');
console.log('Объект разобранного пути:', parsedPath);
// Вывод: { root: '/', dir: '/home/user/dir', base: 'file.txt', ext: '.txt', name: 'file' }

// Форматировать объект как путь
const formattedPath = path.format(parsedPath);
console.log('Formatted path:', formattedPath); // Выводит: '/home/user/dir/file.txt'

Java FileВстроенные модули Node.js

Другие расширения