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 !
Le module path est utilisé pour traiter les chemins et les fichiers, fournissant de nombreuses méthodes.
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.
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);
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));
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);
Si nous voulons fusionner un fichier et un dossier, nous pouvons utiliser path.resolve.
const basepath = 'User/haha' const filename = 'abc.txt'
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.
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.
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);
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('后续需要执行的代码');
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); }) })
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é.
fs.readFile('./abc.txt', {encoding: 'utf-8'}, (err, data) => { console.log(data); })
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); }) }
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.
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!