Maison > interface Web > js tutoriel > le corps du texte

Une brève analyse des modules communs dans node : module path et module fs

青灯夜游
Libérer: 2022-04-26 21:12:29
avant
2328 Les gens l'ont consulté

Il existe de nombreux objets intégrés dans node, qui peuvent nous aider à effectuer de nombreuses opérations, notamment des opérations sur les chemins, les fichiers, etc. L'article suivant vous présentera le module path et le module fs parmi les modules intégrés de node couramment utilisés. J'espère qu'il vous sera utile !

Une brève analyse des modules communs dans node : module path et module fs

module path

Le module path est utilisé pour traiter les chemins et les fichiers, fournissant de nombreuses méthodes.

path.resolve

Il est nécessaire de concaténer le chemin et le nom du fichier.

const basePath = '/user/why'
const filename = 'abc.txt'
Copier après la connexion

Ensuite, quelqu'un utilisera l'épissage de cordes pour épisser.

const filePath = basePath + '/' + filename
console.log(filePath);
Copier après la connexion

Bien qu'il n'y ait aucun problème avec ce résultat, compte tenu des différents systèmes, les systèmes Windows peuvent utiliser \ ou / comme séparateur de chemin, tandis que les systèmes d'exploitation Mac OS, Linux et Unix utilisent / comme séparateur de chemin.

Une brève analyse des modules communs dans node : module path et module fs

Pour résoudre les problèmes ci-dessus, nous pouvons utiliser path.resolve pour épisser les chemins.

const path = require('path')

const basePath = '/user/why'
const filename = 'abc.txt'

const filePath = path.resolve(basePath, filename)

console.log(filePath);
Copier après la connexion

Une brève analyse des modules communs dans node : module path et module fs

Obtenir des informations à partir du chemin

  • dirname : obtenir le dossier parent du fichier
  • basename : obtenir le nom du fichier
  • extname : obtenir l'extension du fichier
const path = require('path')

const filePath = '/User/haha/abc.txt'

console.log(path.dirname(filePath));
console.log(path.basename(filePath));
console.log(path.extname(filePath));
Copier après la connexion

Une brève analyse des modules communs dans node : module path et module fs

Épissage de chemin

Si nous voulons épisser plusieurs chemins, mais que différents systèmes d'exploitation peuvent utiliser des séparateurs différents, nous pouvons utiliser la fonction path.join.

const path = require('path')

const basepath = '/User/haha'
const filename = 'abc.txt'

const filePath = path.join(basepath, filename)
console.log(filePath);
Copier après la connexion

Une brève analyse des modules communs dans node : module path et module fs

Splice un fichier et un dossier

Si nous voulons fusionner un fichier et un dossier, nous pouvons utiliser path.resolve.

const basepath = 'User/haha'
const filename = 'abc.txt'
Copier après la connexion

Une brève analyse des modules communs dans node : module path et module fs

path.resolve et path.join peuvent également être utilisés pour relier des chemins, alors quelle est leur différence ?

const basepath = '../User/haha'
const filename = './abc.txt'
const othername = './haha.js'

const filePath1 = path.join(basepath, filename, othername)
console.log(filePath1);

const filePath2 = path.resolve(basepath, filename, othername)
console.log(filePath2);
Copier après la connexion

Nous pouvons voir la différence.

Une brève analyse des modules communs dans node : module path et module fs

module fs

nodejsLa plupart des API du système de fichiers proposent trois méthodes de fonctionnement :

  • Opération de fichier synchrone : le code sera bloqué et ne continuera pas à s'exécuter

  • Opération de fonction de rappel asynchrone Fichier : Le code ne sera pas bloqué. Vous devez transmettre la fonction de rappel Lorsque le résultat est obtenu, la fonction de rappel exécute

  • Opération de promesse asynchrone Fichier : Le code ne sera pas bloqué. promises renverra une Promise , qui pourra ensuite être traitée et capturée.

Lire l'état du fichier (informations)

Méthode une opération synchrone : fs.statSync

const fs = require('fs')

const filepath = './abc.txt'
const info = fs.statSync(filepath)
console.log('后续需要执行的代码');
console.log(info);
Copier après la connexion

Une brève analyse des modules communs dans node : module path et module fs

Méthode deux opération asynchrone

fs.stat(filepath, (err, info) => {
  if(err) {
    console.log(err);
    return
  }
  console.log(info);
  console.log(info.isFile()); // 判断是否是一个文件
  console.log(info.isDirectory()); // 判断是否是一个文件夹
})
console.log('后续需要执行的代码');
Copier après la connexion

Méthode trois : Promise

fs.promises.stat(filepath).then(info => {
  console.log(info);
}).catch(err => {
  console.log(err);
})

console.log('后续需要执行的代码');
Copier après la connexion

Fichier de scriptor

Attribution de nœuds un numérotype descripteur de fichier pour tous les fichiers ouverts. Toutes les opérations du système de fichiers utilisent ces descripteurs de fichiers pour identifier et suivre chaque fichier spécifique.

La méthode fs.open() est utilisée pour allouer un nouveau descripteur de fichier fd. Une fois alloué, le descripteur de fichier peut être utilisé pour lire des données du fichier, écrire des données dans le fichier ou demander des informations sur le fichier.

const fs = require('fs')

fs.open('./abc.txt', (err, fd) => {
  if(err) {
    console.log(err);
    return
  }

  // 通过文件描述符去获取文件信息
  fs.fstat(fd, (err, info) => {
    console.log(info);
  })
})
Copier après la connexion

Lecture et écriture de fichiers

fs.readFile(path[, options], callback) : Lire le contenu du fichier

fs.writeFile(path[, options], callback) : Écrire le contenu dans le fichier

paramètres d'option :

flag : Méthode d'écriture

encodage : Encodage des caractères

Ecriture de fichiers

fs.writeFile('./abc.txt', content, {flag: "a"}, err => {
  console.log(err);
})
Copier après la connexion

Lecture de fichiers

fs.readFile('./abc.txt', (err, data) => {
  console.log(data);
})
Copier après la connexion

Si l'encodage n'est pas renseigné, le résultat Buffer (binaire) sera renvoyé.

Une brève analyse des modules communs dans node : module path et module fs

fs.readFile('./abc.txt', {encoding: 'utf-8'}, (err, data) => {
  console.log(data);
})
Copier après la connexion

Une brève analyse des modules communs dans node : module path et module fs

Créer un dossier

Utilisez fs.mkdir() ou fs.mkdirSync pour créer un nouveau dossier.

const fs = require('fs')

// 创建文件夹
const dirname = './haha'
if(!fs.existsSync(dirname)) {
  fs.mkdir(dirname, (err) => {
    console.log(err);
  })
}
Copier après la connexion

Obtenez le contenu du dossier

fs.readdir

fs.readdir(dirname, (err, files) => {
  console.log(files);
})
Copier après la connexion

Obtenez tous les fichiers du dossier À ce stade, le répertoire est comme indiqué dans la figure ci-dessous et la récursivité peut être utilisée.

Une brève analyse des modules communs dans node : module path et module fs

const fs = require('fs')
const path = require('path')
const dirname = './haha'

function getFiles(dirname) {
  fs.readdir(dirname, {withFileTypes: true}, (err, files) => {
    // console.log(files);
    for(let file of files) {
      // 判断是否是文件夹
      if(file.isDirectory()) {
        const filepath = path.resolve(dirname, file.name)
        getFiles(filepath)
      } else {
        console.log(file.name);
      }
    }
  })
}

getFiles(dirname)
Copier après la connexion

重命名

可以使用fs.rename对文件夹进行重命名。

fs.rename('./haha', './xixi', err => {
  console.log(err);
})
Copier après la connexion

更多node相关知识,请访问:nodejs 教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:juejin.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal