在node.js里,读取文件分为 同步读取
和 异步读取
。
- 同步读取:
fs.readFileSync()
- 异步读取:
fs.readFile()
可以看到,同步读取其实只是多了 Sync
一个单词,很好记。
准备
以上是文件目录结构,其中 readMe.md
是准备好的文件(用来读取的文件)。
fs.js
是代码文件。
以上是 readMe.md
的内容。
同步读取
let fs = require('fs');
let readMe = fs.readFileSync('readMe.md', 'utf8');
console.log(readMe);
let fs = require('fs');
这句话是用来引入系统提供的文件模块。
fs.readFileSync()
有2个参数。
- 第一个参数:要读取的文件名。
- 第二个参数:编码格式。
把读取到的内容赋给一个变量。
以上就是 同步读取文件
的用法。
异步读取
let fs = require('fs');
fs.readFile('readMe.md', 'utf8', (err, data) => {
if(err) throw err;
console.log(data);
})
img(输出内容)
异步读取的方法和同步是差不多的。只是传参不一样。
fs.readFileSync()
有3个参数。
- 第一个参数:要读取的文件名。
- 第二个参数:编码格式。
- 第三个参数:读取结果
- err:出现的错误都会通过
err
这个参数返回(比如找不到文件等)。 - data:读取文件成功后的返回结果。
- err:出现的错误都会通过
以上就是 异步读取文件
的使用方法。
异步测试
let fs = require('fs');
fs.readFile('readMe.md', 'utf8', (err, data) => {
if(err) throw err;
console.log(data);
})
console.log(123);
在异步读取文件之后加了一句 输出123
。
如果是同步的话,代码是一行一行执行的,所以 “123” 肯定是最后输出。
但在异步中,读取是需要时间去处理的。所以在这段非常短的处理时间内,代码会继续做之后的事情。
所以这里会先输出“123”,再输 readMe.md
里的内容。
读取文件这个功能是一个比较重要的功能。
比如客户端发来一个访问,后端有时候需要返回一个html页面回去,这时通过读取文件就能实现这种功能。
当然,要返回html页面的话并不像上面例子中短短几句就能完事的。