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('成功');
}
});