通过程序来介绍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 listener
emitter.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智能合约相关知识,还会详细的介绍几个实战项目。如果有可能的话,我们还能一起来阅读以太坊的源码。有兴趣的话我们一起来学习区块链技术吧~