03. 读写文件
于2022-10-31 11:27:32发布
64
读取文件
读取文件使用readFile或者readFileSync,前者是异步,后者是同步。这里以异步举个例子。
const fs = require('fs');
fs.readFile('./a.txt', (err, data)=>{
if (err) {
console.log(err);
return;
}
console.log(data.toString());
});
功能:读取当前目录的a.txt的内容
分析
1. 读取文件操作需要引入fs模块
2. 调用fs模块的readFile方法,方法中有2个参数,一个是读取的文件路径,另外一个是回调函数。回调函数中有2个参数,一个是错误信息、一个是读取到的数据。如果读取不到,则err返回错误码。否则返回null
3. 返回的data,如果直接打印,则是二进制数据。需要使用toString转换一下
写入文件
写入文件使用writeFile或者writeFileSync,前者是异步,后者是同步。这里以异步举个例子。
const fs = require('fs');
fs.writeFile('./b.txt', "我爱吃三文鱼", (err)=>{
if (err) {
console.log(err);
return;
}
console.log("写入文件成功");
});
功能:在当前目录下,创建一个b.txt,写入 “我爱吃三文鱼”
分析
1. 写入文件操作需要引入fs模块
2. 调用fs模块的writeFile方法,方法中有3个参数,一个是写入的文件路径,一个是写入的内容,另外一个是回调函数。回调函数中有1个参数,即错误信息。如果写入失败,则err返回错误码。否则返回null
访问www文件夹下的文件
const http = require('http');
const fs = require('fs');
const server = http.createServer((req,res)=>{
fs.readFile('./www' + req.url, (err, data)=>{
if (err) {
res.write('404');
} else {
res.write(data.toString());
}
res.end();
});
});
server.listen(8080);
console.log('server is runing ...');
注意点:res.end()必须放在readFile里面。因为读取文件时异步的,如果放在外面,会先执行res.end(),然后等读取完毕后执行readFile的回调函数,在执行write,则会报 write after end 这个错误