fs模块用于对系统文件及目录进行读写操作,使用如下:
require('fs')
1.引入模块和读取文件
readFile是异步操作
···
const http=require('http');
const fs=require('fs');
let server=http.createServer((req, res)=>{
//读取www下的文件,req.url自带“/”
//url为:http://localhost:8080/1.txt
fs.readFile(www${req.url}, (err, data)=>{
if(err){
res.write('404'); //?
}else{
res.write(data);
}
// 因为readFile是异步,可能write执行晚于end,报错,所以,end放入readFile
res.end();
});
});
server.listen(8080);
···
异步报错
events.js:167
throw er; // Unhandled 'error' event
^
Error [ERR_STREAM_WRITE_AFTER_END]: write after end
at write_ (_http_outgoing.js:572:17)
at ServerResponse.write (_http_outgoing.js:567:10)
at fs.readFile (F:\study\node\www\2019-2-22\0-server2.js:9:11)
at FSReqWrap.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:37:12)
Emitted 'error' event at:
at writeAfterEndNT (_http_outgoing.js:634:7)
at process._tickCallback (internal/process/next_tick.js:63:19)
2.buffer格式
高级语言一般不善于处理二进制
如下文件的直接读取,获得的是buffer格式的,bufffer格式是十六进制的
fs.readFile('1.txt', (err, data)=>{
if(err){
console.log('有错');
}else{
console.log(data);
//console.log(data.toString()); //转换成字符串
}
});
//<Buffer 61 64 73 66 61 73 64 66 61 64 73 66 0d 0a>
3.写文件
格式 fs.writeFile(文件,内容,function)
fs.writeFile('3.txt', 'erqwreqwere', err=>{
if(err){
console.log(err);
}else{
console.log('成功');
}
});