写点什么

通过程序来介绍 Node.js 的几个文件读写和事件监听 API

作者:Regan Yue
  • 2021 年 11 月 11 日
  • 本文字数:1327 字

    阅读完需:约 4 分钟

通过程序来介绍 Node.js 的几个文件读写和事件监听 API

  1. 使用 fs 模块实现文件读取程序


//导入模块const fs = require("fs"); const fileName = "foo.txt";//判断文件或文件夹是否存在fs.exists(fileName, (exists) => {    if (exists) {        //如果存在,查看文件或文件夹的属性        fs.stat(fileName, (error, stats) => {            if (error) {                throw error;            }            //如果是文件就读取文件            if (stats.isFile()) {                fs.readFile(fileName, "utf8", (error, data) => {                    if (error) {                        throw error;                    }                     console.log(data);                })                            }                   })    }})
复制代码


fs.exists()这个了解一下就好了,Node.js 官方现在都不建议使用这个东西了,建议用 fs.stat() 或 fs.access()来替换。这个方法的功能就是检查给定的文件系统路径是否存在。此方法只返回一个布尔值,这是为什么不推荐使用这个方法,而推荐使用 fs.access()的一个重要原因。fs.stat()可以查看文件或文件夹的属性,stats.isFile()判断这个是不是文件。fs.readFile()是用来读取文件的。


2、 使用 fs 和 path 模块实现文件读取和写入


const fs = require('fs')const path = require('path')fs.readFile(path.join(__dirname, '/data/customers.csv'), {  encoding: 'utf-8'},(err, data) = >{  if (err) {    console.error(err) process.exit(1)  } else {    console.log(data)  }
})
复制代码


__dirname总是指向当前执行的 js 文件的绝对路径,所以使用 path.join()可以来拼接文件路径。


const fs = require('fs')fs.writeFile('message.txt', 'Hello World!', (err) = >{  if (err) {    console.error(err) process.exit(1)  } else {    console.log('Writing is done.')
}})
复制代码


调用 fs.writeFile()来将 Hello World!写入文件。第一个参数填文件路径,可以是相对路径,也可以是绝对路径,这里是相对路径。第二个参数是要写入的内容,第三个参数可用可不用,是编码类型,第四个参数是回调函数。


3、 编写事件侦听程序


const events = require("events");const emitter = new events.EventEmitter();const username = "colin";const password = "password";// an event listeneremitter.on("userAdded", (username, password) = >{  console.log("Added user " + username);});// add the user// then emit an event emitter.emit("userAdded", username, password);
复制代码


emitter.on()是用来监听事件的,第一个参数是事件的名称,第二个参数是回调函数。


emitter.emit()可以用来触发事件,第一个参数是事件名称,后面的参数都是传递的参数名称。


今天忙其他事情去了,没啥时间写区块链文章,就发一篇之前学 Node.js 记录的笔记吧。欢迎关注我的专栏[细讲区块链]


本专栏会讲述区块链共识算法以及以太坊智能合约、超级账本智能合约、EOS 智能合约相关知识,还会详细的介绍几个实战项目。如果有可能的话,我们还能一起来阅读以太坊的源码。有兴趣的话我们一起来学习区块链技术吧~

发布于: 20 小时前阅读数: 5
用户头像

Regan Yue

关注

还未添加个人签名 2020.08.12 加入

对Go、Python、网络安全、区块链感兴趣. · 华为云云享专家 · 掘金资讯创作者

评论

发布
暂无评论
通过程序来介绍Node.js 的几个文件读写和事件监听API