Module path de Node.js
de Node.jspathLe module est un module de base intégré, spécialement conçu pour gérer les chemins de fichiers et de répertoires.
path fournit une série de méthodes pratiques qui vous permettent de manipuler en toute sécurité et efficacement les chemins de fichiers dans différents environnements de systèmes d'exploitation.
Pourquoi avez-vous besoin du module path ?
Les différents systèmes d'exploitation utilisent différents séparateurs de chemin :
- Windows utilise des barres obliques inverses
\ - Unix/Linux/macOS utilisent des barres obliques
/
pathLe module gère automatiquement ces différences, ce qui permet à votre code de fonctionner correctement sur différentes plateformes.
Utilisation de base du module path
Importation du module path
Méthodes courantes
1. path.join([...paths]) - Joindre des chemins
Exemple
console.log(fullPath);
// Sous Unix, affiche : /user/documents/file.txt
// Sous Windows, affiche : \user\documents\file.txt
2. path.resolve([...paths]) - Résoudre un chemin absolu
Exemple
console.log(absolutePath);
// Affiche le chemin absolu dans le répertoire de travail actuel, par ex. : /home/user/project/src/app.js
3. path.basename(path[, ext]) - Obtenir le nom du fichier
Exemple
console.log(path.basename('/user/docs/file.txt', '.txt')); // file
4. path.dirname(path) - Obtenir le nom du répertoire
Exemple
5. path.extname(path) - Obtenir l'extension du fichier
Exemple
console.log(path.extname('file')); // Chaîne vide
Gestion des chemins multiplateforme
Séparateurs de chemin
path.sep- Séparateur de chemin spécifique à la plateformeconsole.log(path.sep); // Windows 输出 '\', Unix 输出 '/'
path.delimiter- Séparateur de chemin spécifique à la plateforme (utilisé dans la variable d'environnement PATH)console.log(path.delimiter); // Windows 输出 ';', Unix 输出 ':'
Normalisation des chemins
Utilisationpath.normalize(path)peut normaliser les chemins, en gérant les redondances.、..et les séparateurs :
Exemple
Analyse de chemin et conversion de format
path.parse(path) - Analyse un chemin en un objet
Exemple
console.log(pathObj);
/*
{
root: '/',
dir: '/user/docs',
base: 'file.txt',
ext: '.txt',
name: 'file'
}
*/
path.format(pathObject) - Construire un chemin à partir d'un objet
Exemple
dir: '/user/docs',
name: 'file',
ext: '.txt'
});
console.log(pathStr); // /user/docs/file.txt
Exemples d’application pratique
Exemple 1 : Construction de chemins de fichiers multiplateformes
Exemple
console.log(configPath);
Exemple 2 : Gestion des fichiers téléversés par l'utilisateur
Exemple
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);
}
Exemple 3 : Vérification des extensions de fichiers
Exemple
const ext = path.extname(filename).toLowerCase();
return ['.jpg', '.jpeg', '.png', '.gif'].includes(ext);
}
Méthodes et propriétés
Les méthodes et propriétés du module path sont les suivantes :
| Méthode | Description | Exemple |
|---|---|---|
path.basename(path[, ext]) | Renvoie la dernière partie du chemin (nom du fichier). Le paramètre facultatifextest utilisé pour supprimer l’extension du fichier. | path.basename('/foo/bar/baz.txt'); // 输出: 'baz.txt' |
path.dirname(path) | Renvoie la partie répertoire du chemin. | path.dirname('/foo/bar/baz.txt'); // 输出: '/foo/bar' |
path.extname(path) | Renvoie l’extension de fichier du chemin. | path.extname('/foo/bar/baz.txt'); // 输出: '.txt' |
path.join([...paths]) | Joint plusieurs chemins en un seul chemin, en gérant automatiquement les séparateurs de chemin. | path.join('/foo', 'bar', 'baz/asdf', 'quux', '..'); // 输出: '/foo/bar/baz/asdf' |
path.resolve([...paths]) | Résout une séquence de chemins en un chemin absolu, en traitant chaque segment de chemin de droite à gauche jusqu’à ce qu’un chemin absolu soit construit. | path.resolve('/foo/bar', './baz'); // 输出: '/foo/bar/baz' |
path.normalize(path) | Normalise le chemin, en supprimant les éléments redondants.et.., et remplace les séparateurs de chemin selon le système d’exploitation actuel. | path.normalize('/foo/bar//baz/asdf/quux/..'); // 输出: '/foo/bar/baz/asdf' |
path.isAbsolute(path) | Vérifie si le chemin est un chemin absolu. | path.isAbsolute('/foo/bar'); // 输出: true |
path.relative(from, to) | Renvoie depuisfromle chemin verstole chemin relatif du chemin. | path.relative('/foo/bar/baz', '/foo/bar/qux'); // 输出: '../qux' |
path.parse(path) | propriétés de l'élément sélectionné.root、dir、base、extetnameFormate l'objet chemin en une chaîne de chemin, qui est | path.parse('/home/user/dir/file.txt');l'inverse.{ root: '/', dir: '/home/user/dir', base: 'file.txt', ...} |
path.format(pathObject) | Fournit le séparateur de chemin du système d'exploitation actuel (POSIX estpath.parse, Windows est | path.format({ root: '/', dir: '/home/user/dir', base: 'file.txt' }); // 输出: '/home/user/dir/file.txt' |
path.sep | Fournit le délimiteur de chemin (le séparateur entre les chemins dans les variables d'environnement), POSIX est'/', Windows est'\')。 | console.log(path.sep); // 输出: '\' (Windows) ou '/' (POSIX) |
path.delimiter | Exemple:Exemple;。 | console.log(path.delimiter); // 输出: ';' (Windows) ou ':' (POSIX) |
Exemple
Créez un fichier main.js, le code est le suivant :
Exemple
// Obtenir le nom du fichier
console.log('Nom du fichier:', path.basename('/foo/bar/baz.txt')); // Sortie: 'baz.txt'
// Obtenir le nom du répertoire
console.log('Nom du répertoire:', path.dirname('/foo/bar/baz.txt')); // Affiche : '/foo/bar'
// Obtenir l'extension
console.log('Extension :', path.extname('/foo/bar/baz.txt')); // Affiche : '.txt'
// Concaténer des chemins
console.log('Chemin joint :', path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')); // Affiche : '/foo/bar/baz/asdf'
// Résoudre le chemin absolu
console.log('Chemin absolu :', path.resolve('/foo/bar', './baz')); // Affiche : '/foo/bar/baz'
// Normaliser le chemin
console.log('Chemin normalisé :', path.normalize('/foo/bar//baz/asdf/quux/..')); // Sortie : '/foo/bar/baz/asdf'
// Déterminer s'il s'agit d'un chemin absolu
console.log('Chemin absolu :', path.isAbsolute('/foo/bar')); // Sortie : true
// Chemin relatif
console.log('Chemin relatif :', path.relative('/foo/bar/baz', '/foo/bar/qux')); // Sortie : '../qux'
// Analyser le chemin en objet
const parsedPath = path.parse('/home/user/dir/file.txt');
console.log('Objet de chemin analysé :', parsedPath);
// Sortie : { root: '/', dir: '/home/user/dir', base: 'file.txt', ext: '.txt', name: 'file' }
// Formater l'objet en chemin
const formattedPath = path.format(parsedPath);
console.log('Formatted path:', formattedPath); // Sortie : '/home/user/dir/file.txt'
Modules intégrés de Node.js