• 技术文章 >web前端 >js教程

    快速了解nodejs项目中如何增删改查文件

    青灯夜游青灯夜游2021-09-01 18:22:03转载171

    这篇文章主要是写给初学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('改名完成') 
        
            })
        })
    })

    总结:

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

    总结:

    文件流操作

    创建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('文件夹删除成功')
        })
    }

    总结:

    这3个操作文件夹的方法非常常用,就像每天吃饭一样。

    更多编程相关知识,请访问:编程入门!!

    以上就是快速了解nodejs项目中如何增删改查文件的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:掘金社区,如有侵犯,请联系admin@php.cn删除
    专题推荐:nodejs 文件模块
    上一篇:javascript中怎么求1到20的阶乘 下一篇:浅谈Angular中如何使用路由?
    大前端线上培训班

    相关文章推荐

    • Nodejs中如何使用模板引擎?如何使用模板引擎渲染HTML?• 深入浅析Nodejs的安装方法与模块系统• 快速带你入门Nodejs的文件操作和stream(流)• 怎么将Nodejs中的buffer转为JSON格式和UTF-8字符串?

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网