nodejs文件控制模块

lxf2023-03-09 09:00:01

nodejs文件控制模块

本文通常是送给入门node.js的同学们,本文关键姐详细介绍nodejs文件控制模块,根据nodejs文件控制模块,我们能建立、载入、改动、删掉大家电脑操作系统里的文件或文件夹名称,同样在Linux服务器上都是能够运转的。由于nodejs是混合开发运转的javascript软件环境。【强烈推荐学习培训:《nodejs 教程》】

Nodejs File System官方文档:https://nodejs.org/dist/latest-v14.x/docs/api/fs.html

代码:https://github.com/cmdfas/nodejs-file-system

项目结构:

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

基本文件操作

调用函数式实际操作

建立index-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删除文件

这3个实际操作文件夹名称的办法十分常见,如同每日吃饭一样。

大量程序编写基本知识,请访问:编程学习!!

以上就是关于快速了解nodejs工程中怎样增删文件信息具体内容,大量欢迎关注AdminJS其他类似文章!