Maison  >  Article  >  interface Web  >  Une brève analyse des modules communs dans node : module path et module fs

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

青灯夜游
青灯夜游avant
2022-03-31 20:34:032203parcourir

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'

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

const filePath = basePath + '/' + filename
console.log(filePath);

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);

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));

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);

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'

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);

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);

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('后续需要执行的代码');

Méthode trois : Promise

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

console.log('后续需要执行的代码');

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);
  })
})

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);
})

Lecture de fichiers

fs.readFile('./abc.txt', (err, data) => {
  console.log(data);
})

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);
})

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);
  })
}

Obtenez le contenu du dossier

fs.readdir

fs.readdir(dirname, (err, files) => {
  console.log(files);
})

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)

重命名

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

fs.rename('./haha', './xixi', err => {
  console.log(err);
})

更多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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer