用node.js读写文件时,需要引入一个新的模块fs(file system文件系统)。文件系统的操作都有异步和同步的形式,案例使用异步方法,防止阻塞。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| const fs = require('fs'); fs.readFile('aaa.txt', function(err, data) { if(err) { console.log('读取失败'); } else { console.log(data.toString()); } })
fs.writeFile('bbb.txt', 'hello world', function(err) { console.log(err); })
|
文件读取可以配合http
模块使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| const http = require('http'); const fs = require('fs');
http.createServer(function(req, res) { let fileName = 'file/' + req.url;
fs.readFile(fileName, function(err, data) { if(err) { res.write('404'); } else { res.write(data); } res.end(); }) }).listen(8080);
|
2018/08/10 更新
fs
模块的readFile
方法是异步读取的,所以我们也可以结合ES6中提到的async函数来完成读取多个文件的操作。
- 首先添加两个文件来给我们一会儿读取,我在根目录下添加了一个
data
文件夹,里面放了很简单的两个文件1.txt
和2.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| const fs = require("fs");
const readFile = function(fileName) { return new Promise((resolve, reject) => { fs.readFile(fileName, (err, data) => { if(err) return reject(err); resolve(data); }) }) }
const asyncReadFile = async function() { const f1 = await readFile('data/1.txt'); const f2 = await readFile('data/2.json'); console.log(f1.toString()); console.log(f2.toString()); }
asyncReadFile();
|
读取结果: