nodejs 中的读取文件fs模块示例详解
尤金前端 人气:0什么是 nodejs?
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,nodejs 允许 javascript 代码运行在服务端。
nodejs 不是一门新的编程语言,nodejs是在服务端运行 javascript 的运行环境
运行环境:写得程序想要运行必须要有对应的运行环境
- php 代码必须要有 apache 服务器
- 在 web 端,浏览器就是 javascript 的运行环境
- 在服务端,nodejs 就是 javascript 的运行环境
javascript 并不只是能运行在浏览器端,浏览器端能够运行 js 是因为浏览器有 js 解析器,因此只需要有 js 解析器,任何软件都可以运行 js。
nodejs 可以在服务端运行 js,因为 nodejs 是基于 chrome v8 的 js 引擎。
global 模块-全局变量
Node.js 中的全局对象是 global, 类似于浏览器中的window。
常用的global属性
console
: 用于打印日志setTimeout
/clearTimeout
: 设置清除延时器setInterval
/clearInterval
: 设置清除定时器__dirname
: 当前文件的路径,不包括文件名__filename
: 获取当前文件的路径,包括文件名
与模块化相关的,模块化的时候会用到
require
exports
module
fs模块
fs 模块是 nodejs 中最常用的一个模块,因此掌握 fs 模块非常的有必要,fs 模块的方法非常多,用到了哪个查哪个即可。
注意:
除了 global 模块中的内容可以直接使用,其他模块都是需要加载的。 fs 模块不是全局的,不能直接使用。因此需要导入才能使用。
const fs = require("fs");
读取文件
语法:fs.readFile(path[, options], callback)
方式一:不传编码参数
//参数1: 文件的名字 //参数2: 读取文件的回调函数 //参数1:错误对象,如果读取失败,err会包含错误信息,如果读取成功,err是null //参数2:读取成功后的数据(是一个Buffer对象) fs.readFile("data.txt", function(err, data){ console.log(err); console.log(data); });
方式二:传编码参数
//参数1: 文件的路径 //参数2: 编码,如果设置了,返回一个字符串,如果没有设置,会返回一个buffer对象 //参数3: 回调函数 fs.readFile("data.txt", "utf8",function(err, data){ console.log(err); console.log(data); });
关于 Buffer 对象
- Buffer 对象是 Nodejs 用于处理二进制数据的。
- 其实任意的数据在计算机底层都是二进制数据,因为计算机只认识二进制。
- 所以读取任意的文件,返回的结果都是二进制数据,即 Buffer 对象
- Buffer 对象可以调用 toString() 方法转换成字符串。
写文件
语法:fs.writeFile(file, data[, options], callback)
//参数1:写入的文件名(如果文件不存在,会自动创建) //参数2:写入的文件内容(注意:写入的内容会覆盖以前的内容) //参数3:写文件后的回调函数 fs.writeFile("2.txt", "hello world, 我是一个中国人", function(err){ if(err) { return console.log("写入文件失败", err); } console.log("写入文件成功"); });
注意:
写文件的时候,会把原来的内容给覆盖掉
追加文件
语法:fs.appendFile(path, data[, options], callback)
//参数1:追加的文件名(如果文件不存在,会自动创建) //参数2:追加的文件内容(注意:写入的内容会覆盖以前的内容) //参数3:追加文件后的回调函数 fs.appendFile("2.txt", "我是追加的内容", function(err){ if(err) { return console.log("追加文件内容失败"); } console.log("追加文件内容成功"); })
文件同步与异步的说明
fs 中所有的文件操作,都提供了异步和同步两种方式
异步方式: 不会阻塞代码的执行
//异步方式 var fs = require("fs"); console.log(111); fs.readFile("2.txt", "utf8", function(err, data){ if(err) { return console.log("读取文件失败", err); } console.log(data); }); console.log("222");
同步方式: 会阻塞代码的执行
//同步方式 console.log(111); var result = fs.readFileSync("2.txt", "utf-8"); console.log(result); console.log(222);
总结:
同步操作使用虽然简单,但是会影响性能,因此尽量使用异步方法,尤其是在工作过程中。
加载全部内容