当前位置: 首页 > news >正文

浅谈Node.js以及对fs模块的理解及常用方法

1.Node.js是什么?
Node.js是一个开源与跨平台的JavaScript运行时环境。
在浏览器外运行V8 JavaScript引擎(Google Chrome的内核),利用事件驱动、非阻塞和异步输入输出模型等技术提高性能。
可以理解为Node.js就是一个服务端的、非阻塞式I/O的、事件驱动的JavaScript运行环境。
2.非阻塞异步
Node.js采用了非阻塞型I/O机制,在做I/O操作的时候不会造成任何阻塞,当完成之后,以时间的形式通知执行操作。
例如在执行了访问数据库的代码之后,将立即转而执行其后面的代码,把数据库返回结果的处理代码放在回调函数中,从而提高了程序的执行效率。
3.事件驱动
事件驱动就是当进来一个新的请求时,请求将会被压入一个事件队列中,然后通过一个循环来检测队列中的事件状态变化,如果检测到有状态变化的事件,那么就执行该事件对应的处理代码,一般都是回调函数。比如读取一个文件,文件读取完毕后,就会触发对应的状态,然后通过对应的回调函数来进行处理。
4.Node.js优缺点
优点:
处理高并发场景性能最佳
适合I/O密集型应用,值的是应用在运行极限时,CPU占用率任然比较低,大部分时间是在做I/O硬盘内存读写操作。
缺点:
不适合CPU密集型应用
只支持单核CPU应用,不能充分利用CPU
可靠性低,一旦代码某个环节奔溃,整个系统都奔溃
5.Node.js中的fs模块理解,有哪些常用方法?
fs模块是什么?
该模块提供本地的读写能力,基本上是POSIX文件操作命令的简单包装可以说,所有与文件的操作都是通过fs核心模块实现
导入模块如下:

const fs = require('fs');

这个模块对所有文件系统操作提供异步(不具有sync后缀)和同步(具有sync后缀)两种操作方式,而供开发者选择
6.文件读取
fs.readFileSync
同步读取,参数如下:
第一个参数为读取文件的路径或文件描述符
第二个参数为options,默认值为null,其中有encoding(编码,默认为null)和flag(标识位,默认为r),也可直接传入encoding
结果为返回文件内容

const fs = require("fs");
let buf = fs.readFileSync("1.txt");
let data = fs.readFileSync("1.txt", "utf8");
console.log(buf); // <Buffer 48 65 6c 6c 6f>
console.log(data); // Hello

fs.readFile
异步读取方法readFile与readFileSync的前两个参数相同,最后一个参数为回调函数,函数内有两个参数err(错误)和data(数据),该方法没有返回值,回调函数在读取文件成功后执行。

const fs = require("fs");
fs.readFile("1.txt", "utf8", (err, data) => {if(!err){console.log(data); // Hello}
});

文件写入writeFileSync
同步写入,有三个参数:
第一个参数为写入文件的路径或文件述符
第二个参数为写入的数据,类型为String或Buffer
第三个参数为options,默认值为null,其中有encoding(编码,默认为utf8)、flag(标识位,默认为w)和mode(权限位、默认为0o666),也可直接传入encoding

const fs = require("fs");
fs.writeFileSync("2.txt", "Hello world");
let data = fs.readFileSync("2.txt", "utf8");
console.log(data); // Hello world

writeFile
异步写入,writeFile与writeFileSync的前三个参数相同,最后一个参数为回调函数,函数内有一个参数err(错误),回调函数在文件写入数据成功后执行。

const fs = require("fs");
fs.writeFile("2.txt", "Hello world", err => {if (!err) {fs.readFile("2.txt", "utf8", (err, data) => {console.log(data); // Hello world});}
});

文件追加写入
appendFileSync参数如下:
第一个参数为写入文件的路径或文件述符
第二个参数为写入的数据,类型为String或Buffer
第三个参数为options,默认值为null,其中有encoding(编码,默认为utf8)、flag(标识位,默认为w)和mode(权限位、默认为0o666),也可直接传入encoding

const fs = require("fs");
fs.appendFileSync("3.txt", " world");
let data = fs.readFileSync("3.txt", "utf8");

appendFile
异步追加写入方法appendFile与appendFileSync的前三个参数相同,最后一个参数为回调函数,函数内有一个参数err(错误),回调函数在文件追加写入数据成功后执行。

const fs = require("fs");
fs.appendFile("3.txt", " world", err => {if (!err) {fs.readFile("3.txt", "utf8", (err, data) => {console.log(data); // Hello world});}
});

文件拷贝
copyFileSync同步拷贝

const fs = require("fs");
fs.copyFileSync("3.txt", "4.txt");
let data = fs.readFileSync("4.txt", "utf8");
console.log(data); // Hello world

copyFile异步拷贝

const fs = require("fs");
fs.copyFile("3.txt", "4.txt", () => {fs.readFile("4.txt", "utf8", (err, data) => {console.log(data); // Hello world});
});

创建目录
mkdirSync
同步创建,参数为一个目录的路径,没有返回值,在创建目录的过程中,必须保证传入的路径前面的文件目录都存在,否则会抛出异常

// a a b 
fs.mkdirSync("a/b/c")

mkdir
异步创建,第二个参数为回调函数

fs.mkdir("a/b/c", err => {if (!err) console.log(" ");
});
http://www.dtcms.com/a/399187.html

相关文章:

  • AIGC中的图像生成Stable Diffusion,MidJourney需要的算力配置要求是什么?
  • 建设资格执业注册中心网站扬中话
  • 兰州网站建设小程序html访问人数统计代码
  • vscode ssh连接远程服务器一直显示正在打开远程Initializing VS Code Server(已解决)
  • 网站初期建设的成本来源关键词快速排名软件价格
  • Nature论文深度剖析:DeepSeek R1 MoE架构的工程化实践与代码级优化
  • 【GD32】串口
  • 双活、异地多活架构怎么设计才不翻车?
  • 怎么创建一个网站卖东西isp网站接入做哪些业务
  • 佛山市多语言营销型网站建站制作网站的最新软件
  • UniApp 技术架构深度解析
  • 北京网站seowyhseo滨海做网站的公司
  • 基于 DMS 进行 DDL 同步的测试与分析
  • 网站 分辨率射阳做企业网站哪家好
  • Qt入门学习记录
  • 外贸网站谷歌seo西安网页设计模板
  • 数据结构与设计模式面试问题及解答
  • linux centos 脚本批量启动宝塔服务(二)
  • 云平台网站叫什么泰州公司做网站
  • 信息系统项目的规划绩效域
  • python+vue的实践性教学系统Java
  • Jupyter 中指定 Python 环境的几种方法
  • 南京网站排名软装设计公司排行
  • 网络营销活动策划南宁seo多少钱报价
  • BGP的内外之道
  • vue 在el-tabs动态添加添加table
  • 角色的视角移动朝向 控制
  • WebStorm 借助 Docker 插件一键部署前端项目到开发环境
  • 静态企业网站模板做律师网站公司
  • 江苏网站建设 博敏网站免费logo在线设计生成