Maison  >  Article  >  interface Web  >  Comprenez rapidement comment ajouter, supprimer, modifier et vérifier des fichiers dans les projets nodejs

Comprenez rapidement comment ajouter, supprimer, modifier et vérifier des fichiers dans les projets nodejs

青灯夜游
青灯夜游avant
2021-09-01 18:22:031479parcourir

Comprenez rapidement comment ajouter, supprimer, modifier et vérifier des fichiers dans les projets nodejs

Cet article est principalement écrit pour les étudiants qui découvrent node.js. Cet article présente principalement le module de fichiers de nodejs. Grâce au module de fichiers de nodejs, nous pouvons créer, lire, modifier et supprimer des fichiers sur notre système d'exploitation. . Les fichiers ou dossiers peuvent également être exécutés sur des serveurs Linux de la même manière. Parce que nodejs est un environnement d'exécution JavaScript multiplateforme. [Apprentissage recommandé : "Tutoriel Nodejs"]

Document officiel du système de fichiers Nodejs : https://nodejs.org/dist/latest-v14.x/docs/api/fs.html

Code source : https:/ / github.com/cmdfas/nodejs-file-system

Structure du projet :

├── files
│   ├── file1
│   └── file2
├── dir.js
├── index-callback.js
├── index-promise.js
└── stream.js

Opérations générales sur les fichiers

Opérations fonctionnelles de rappel

Créez index-callback.js, le code est le suivantindex-callback.js,代码如下

const fs = require('fs')
const path = require('path')

// 读取文件
fs.readFile(path.join(__dirname, 'files', 'file1'), (err, buf) => {
    if (err) throw err
    console.log(buf.toString()) 
})

// 写入文件
fs.writeFile(path.join(__dirname, 'files', 'file3'), '欢迎光临', (err) => {
    if (err) throw err
    console.log('写入完成') 

  	// 在文件末尾追加
    fs.appendFile(path.join(__dirname, 'files', 'file3'), '\n\n男宾三位', (err) => {
        if (err) throw err
        console.log('追加完成') 

      	// 修改文件名称
        fs.rename(path.join(__dirname, 'files', 'file3'), path.join(__dirname, 'files', 'file3-rename'), (err) => {
            if (err) throw err
            console.log('改名完成') 
    
        })
    })
})

总结:

  • readFile用来读取文件的内容,在读取成功后在回调函数返回的是buffer格式,所以需要调用toString()方法
  • writeFile写入内容进文件,如果文件不存在会自动创建文件
  • appendFile在文件末尾追加内容,如果文件不存在会自动创建文件
  • rename可以用来修改文件名称
  • path.join用来拼接文件路径,可以避免不同操作系统路径格式不同的问题
  • __dirname是node.js全局变量,默认是当前项目目录

promise async await式操作

创建index-promise.js,代码如下

const fsPromises = require('fs').promises
const path = require('path')

const fileFunc = async () => {
    try {
        const data = await fsPromises.readFile(path.join(__dirname, 'files', 'file1'))
        console.log(data.toString())
        await fsPromises.unlink(path.join(__dirname, 'files', 'file1'))
      
        await fsPromises.writeFile(path.join(__dirname, 'files', 'file5'), data)
        await fsPromises.appendFile(path.join(__dirname, 'files', 'file5'), '\n\n欢迎光临')
        await fsPromises.rename(path.join(__dirname, 'files', 'file5'), path.join(__dirname, 'files', 'file5-rename'))
        const newData = await fsPromises.readFile(path.join(__dirname, 'files', 'file5-rename'))
        console.log(newData.toString())
    } catch (error) {
        console.log(error)
    }
}

fileFunc()

总结:

  • 相比回调式操作,使用async await操作会更加优雅,不会出现回调地狱
  • unlink用来删除文件

文件流操作

创建stream.js,代码如下

方式一

const fs = require('fs')

// 读取文件流
const rs = fs.createReadStream('./files/file2', { encoding: 'utf8' })
// 写入文件流
const ws = fs.createWriteStream('./files/new-file2')

// 监听读取并写入
rs.on('data', (chunk) => {
	ws.write(chunk)
})

在读取大文件时或者处理网络文件时,文件流操作很有用,在操作大文件时,我们可以设置每次读取的数据量大小,默认是64kb

方式二

const fs = require('fs')

// 读取文件流
const rs = fs.createReadStream('./files/file2', { encoding: 'utf8' })
// 写入文件流
const ws = fs.createWriteStream('./files/new-file2')

rs.pipe(ws)

pipe方法自动将读取文件流导入到写入流,相当于一个便捷操作。

操作文件夹

创建dir.js,代码如下

const fs = require('fs')

// 判断文件夹是否存在
if (!fs.existsSync('./new')) {
  	// 创建文件夹
    fs.mkdir('./new', (err) => {
        if (err) throw err
        console.log('文件夹创建成功')
    })
}

if (fs.existsSync('./new')) {
  	// 删除文件夹
    fs.rmdir('./new', (err) => {
        if (err) throw err
        console.log('文件夹删除成功')
    })
}

总结:

  • existsSync是同步方法,用来判断文件夹是否存在
  • mkdir创建文件夹
  • rmdir rrreee
  • Résumé :
  • readFile est utilisé pour lire le contenu du fichier une fois la lecture réussie, la fonction de rappel renvoie le format du tampon, la méthode toString() en a donc besoin. à appeler

  • writeFileÉcrit le contenu dans le fichier si le fichier n'existe pas, il créera automatiquement le fichier
  • appendFileAjoute le contenu à la fois. fin du fichier. Si le fichier n'existe pas, il créera automatiquement le fichier

  • rename peut être utilisé pour modifier le nom du fichier
  • path.join code> est utilisé pour fusionner les chemins de fichiers, ce qui peut éviter le problème des différents formats de chemin dans différents systèmes d'exploitation
  • __dirname est une variable globale node.js, la valeur par défaut est le répertoire actuel du projet 🎜

    opération d'attente asynchrone de promesse🎜🎜Créez index-promise.js, le code est le suivant 🎜rrreee🎜 Résumé : 🎜<ul> <li> Par rapport aux opérations de rappel, l'utilisation des opérations d'attente asynchrone sera plus élégante et ne provoquera pas un enfer de rappel🎜</li> <li>Utilisez <code>unlink pour supprimer des fichiers🎜🎜

    Fichier opération de flux🎜🎜Créez stream.js, le code est le suivant🎜

    1🎜rrreee🎜Les opérations de flux de fichiers sont très utiles lors de la lecture ou du traitement de fichiers volumineux fichiers réseau. Lors de l'utilisation de fichiers volumineux, nous pouvons définir la quantité de données lues à chaque fois. La valeur par défaut est 64 Ko🎜

    Méthode 2🎜rrreee🎜pipe. importe automatiquement le flux de fichiers de lecture dans le flux d'écriture, ce qui équivaut à une opération pratique. 🎜

    Dossier d'opération 🎜🎜Créez dir.js, le code est le suivant 🎜rrreee🎜Résumé : 🎜
    • existsSync code> est une méthode de synchronisation, utilisée pour déterminer si le dossier existe🎜<li> <code>mkdirCréer un dossier🎜
    • rmdirSupprimer un dossier🎜🎜🎜Ces 3 opérations La méthode du dossier est très courante, tout comme manger tous les jours. 🎜🎜Pour plus de connaissances sur la programmation, veuillez visiter : 🎜Introduction à la programmation🎜 ! ! 🎜

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