Модуль path в Node.js
Node.jspathЭтот модуль является встроенным базовым модулем, специально предназначенным для обработки путей к файлам и каталогам.
path предоставляет ряд практических методов, которые позволяют безопасно и эффективно работать с путями к файлам в различных средах операционных систем.
Зачем нужен модуль path?
Разные операционные системы используют разные разделители путей:
- Windows использует обратные слэши
\ - Unix/Linux/macOS используют прямые слэши
/
pathМодуль автоматически обрабатывает эти различия, позволяя вашему коду правильно работать на разных платформах.
Базовое использование модуля path
Импорт модуля path
Часто используемые методы
1. path.join([...paths]) - Объединение путей
Пример
console.log(fullPath);
// В Unix выводит: /user/documents/file.txt
// В Windows выводит: \user\documents\file.txt
2. path.resolve([...paths]) - Преобразование в абсолютный путь
Пример
console.log(absolutePath);
// Выводит абсолютный путь в текущем рабочем каталоге, например: /home/user/project/src/app.js
3. path.basename(path[, ext]) - Получить имя файла
Пример
console.log(path.basename('/user/docs/file.txt', '.txt')); // file
4. path.dirname(path) - Получить имя каталога
Пример
5. path.extname(path) - Получить расширение файла
Пример
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)может нормализовать пути, обрабатывая избыточные.、..и разделители:
Пример
Разбор путей и преобразование формата
path.parse(path) - Разбирает путь в объект
Пример
console.log(pathObj);
/*
{
root: '/',
dir: '/user/docs',
base: 'file.txt',
ext: '.txt',
name: 'file'
}
*/
path.format(pathObject) — создание пути из объекта
Пример
dir: '/user/docs',
name: 'file',
ext: '.txt'
});
console.log(pathStr); // /user/docs/file.txt
Практические примеры применения
Пример 1: Построение кроссплатформенных путей к файлам
Пример
console.log(configPath);
Пример 2: Обработка файлов, загруженных пользователем
Пример
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: Проверка расширений файлов
Пример
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, код выглядит следующим образом:
Пример
// Получить имя файла
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'
Встроенные модули Node.js