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

举报
Regan Yue 发表于 2021/11/14 10:27:32 2021/11/14
【摘要】 通过程序来介绍Node.js 的几个文件读写和事件监听API使用 fs 模块实现文件读取程序//导入模块const fs = require("fs"); const fileName = "foo.txt";//判断文件或文件夹是否存在fs.exists(fileName, (exists) => { if (exists) { //如果存在,查看文件或文件夹的属性 ...

通过程序来介绍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()是用来读取文件的。与fs.readFile()功能差不多的还有,`fs.readFileSync()`,只是前者是异步的,而后者是同步的。同步操作的好处是简单,但是当读文件时就不能再进行其他操作了,而异步读取不需要等待,但是代码比较复杂。

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()可以来拼接文件路径。

process.exit(退出码) 是用来终止进程的。如果退出码为空表示退出码为'0'或者'process.exitCode'.这些代表以成功状态退出。如果退出码为1,就是让进程强制退出,即便还有操作未完成。

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。