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

简介: fs.exists()这个了解一下就好了,Node.js官方现在都不建议使用这个东西了,建议用 fs.stat() 或 fs.access()来替换。这个方法的功能就是检查给定的文件系统路径是否存在。此方法只返回一个布尔值,这是为什么不推荐使用这个方法,而推荐使用fs.access()的一个重要原因。fs.stat()可以查看文件或文件夹的属性,stats.isFile()判断这个是不是文件。fs.readFile()是用来读取文件的。与fs.readFile()功能差不多的还有,`fs.readFileSync()`,只是前者是异步的,而后者是同步的。同步操作的好处是简单,但是当读文件时就不

通过程序来介绍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()可以用来触发事件,第一个参数是事件名称,后面的参数都是传递的参数名称。

目录
相关文章
|
7月前
|
编解码 JavaScript 前端开发
如何在网页播放英文的m3u8文件(基于Javascript搭建的在线网页工具)
什么是m3u8?又该如何在网页中高效、便捷地播放英文的m3u8文件呢?今天这篇文章就带你一起了解,并推荐一种基于Javascript搭建的在线网页工具,让你轻松解决播放问题。
2030 0
|
11月前
|
前端开发 JavaScript NoSQL
使用 Node.js、Express 和 React 构建强大的 API
本文详细介绍如何使用 Node.js、Express 和 React 构建强大且动态的 API。从开发环境搭建到集成 React 前端,再到利用 APIPost 高效测试 API,适合各水平开发者。内容涵盖 Node.js 运行时、Express 框架与 React 库的基础知识及协同工作方式,还涉及数据库连接和前后端数据交互。通过实际代码示例,助你快速上手并优化应用性能。
|
12月前
|
Kubernetes API 网络安全
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
当Node节点上的 `kubectl`无法连接到Kubernetes API服务器时,可以通过以上步骤逐步排查和解决问题。首先确保网络连接正常,验证 `kubeconfig`文件配置正确,检查API服务器和Node节点的状态,最后排除防火墙或网络策略的干扰,并通过重启服务恢复正常连接。通过这些措施,可以有效解决与Kubernetes API服务器通信的常见问题,从而保障集群的正常运行。
961 17
|
JSON 缓存 JavaScript
深入浅出:使用Node.js构建RESTful API
在这个数字时代,API已成为软件开发的基石之一。本文旨在引导初学者通过Node.js和Express框架快速搭建一个功能完备的RESTful API。我们将从零开始,逐步深入,不仅涉及代码编写,还包括设计原则、最佳实践及调试技巧。无论你是初探后端开发,还是希望扩展你的技术栈,这篇文章都将是你的理想指南。
|
JavaScript 前端开发 安全
盘点原生JS中目前最没用的几个功能API
在JavaScript的发展历程中,许多功能与API曾风光无限,但随着技术进步和语言演化,部分功能逐渐被淘汰或被更高效的替代方案取代。例如,`with`语句使代码作用域复杂、可读性差;`void`操作符功能冗余且影响可读性;`eval`函数存在严重安全风险和性能问题;`unescape`和`escape`函数已被`decodeURIComponent`和`encodeURIComponent`取代;`arguments`对象则被ES6的剩余参数语法替代。这些变化体现了JavaScript不断优化的趋势,开发者应紧跟技术步伐,学习新技能,适应新技术环境。
275 10
|
JavaScript 前端开发 API
Next.js 实战 (六):如何实现文件本地上传
这篇文章介绍了在Next.js中如何实现文件上传到本地的方法。文章首先提到Next.js官方文档中没有提供文件上传的实例代码,因此开发者需要自行实现,通常有两种思路:使用Node.js原生上传或使用第三方插件如multer。接着,文章选择了使用Node.js原生上传的方式来讲解实现过程,包括如何通过哈希值命名文件、上传到指定目录以及如何分类文件夹。然后,文章展示了具体的实现步骤,包括编写代码来处理文件上传,并给出了代码示例。最后,文章通过一个效果演示说明了如何通过postman模拟上传文件,并展示了上传后的文件夹结构。
447 0
Next.js 实战 (六):如何实现文件本地上传
|
JSON JavaScript 前端开发
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发作为连接用户与数据的桥梁,扮演着至关重要的角色。本文将引导您步入Node.js的奇妙世界,通过实践操作,掌握如何使用这一强大的JavaScript运行时环境构建高效、可扩展的RESTful API。我们将一同探索Express框架的使用,学习如何设计API端点,处理数据请求,并实现身份验证机制,最终部署我们的成果到云服务器上。无论您是初学者还是有一定基础的开发者,这篇文章都将为您打开一扇通往后端开发深层知识的大门。
358 12
|
JavaScript NoSQL API
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发如同一座灯塔,指引着数据的海洋。本文将带你航行在Node.js的海域,探索如何从一张白纸到完成一个功能完备的RESTful API。我们将一起学习如何搭建开发环境、设计API结构、处理数据请求与响应,以及实现数据库交互。准备好了吗?启航吧!
|
JavaScript API 定位技术
【百度地图API】多家地图API文件大小对比
原文:【百度地图API】多家地图API文件大小对比 于2011.6.9日更新百度地图API文件大小。同时更新图片。 任务描述:   明天就是元宵佳节啦~这是一个团团圆圆的节日,于是,再次想把各家API聚在一起“开大会”。
1806 0
|
5月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。