寫入文件
fs中提供了四種不同的方式將數據寫入文件
– 同步文件寫入
– 異步文件寫入
– 簡單文件寫入
– 流式文件寫入
同步文件寫入
//1,引入文件模塊
let fs=require("fs");
//2,打開文件
let result=fs.openSync("test.txt","w");
//3,同步往文件寫入內容
fs.writeSync(result,"今天天氣真好",6);
//4,關閉文件,如果不關閉,打開的文件會一直在內存里運行,會造成資源浪費。
fs.closeSync(result);
異步文件寫入
//1,引入文件模塊
let fs=require("fs");
//2,打開文件
fs.open("test.txt","w",function(error,fd){
if(!error){
//3,異步往文件寫入內容
fs.write(fd,"今天天氣真好",function(err){
if(!err){
console.log("寫入成功");
}
//關閉打開的文件
fs.close(fd,function(err2){
console.log("文件關閉");
});
});
}else{
console.log(error);
}
});
簡單文件寫入
簡單同步文件寫入
fs.writeFileSync(file, data[, options])
簡單異步文件寫入
fs.writeFile(file, data[, options], callback)
file:要操作的文件路徑
data:要寫入的數據。
options選項:可以對寫入進行一些設置,這個參數是可選參數。是一個對象,如{flag:"a"},不加默認是覆蓋寫入。
callback:當寫入完成后執行的回調函數。
如:
let fs=require("fs");
fs.writeFile("test2.txt","看我有沒有把你覆蓋掉",{flag:"a"},function(error){
if(!error){
console.log("寫入成功");
}
});
流式文件寫入
往一個文件中寫入大量數據時,最好的方法之一是使用流。
同步、異步、簡單文件寫入都不適合大文件的寫入,性能較差,容易導致內存溢出。
fs.createWriteStream(path[, options]):可以創建一個可寫流
path:文件路徑
options:配置參數,可以不用寫,因為是帶中括號的。
//1,引入文件模塊
let fs=require("fs");
//創建一個可寫流
let ws=fs.createWriteStream("test3.txt");
//可以通過事件監聽流的open和close事件來監聽流的打開和關閉。
//on(事件字符串,回調函數):可以位對象綁定一個事件。
//once(事件字符串,回調函數):可以為對象綁定一個一次性的事件,該事件將會在觸發一次后自動失效。
ws.once("open",function(){
console.log("流打開了");
});
ws.once("close",function(){
console.log("流關閉了");
});
ws.write("今天天氣真晴朗,");//流寫入也是異步的。也就是這行代碼不會阻塞程序運行。
ws.write("我是中間人,");
ws.write("處處好風光。");
//關閉流
ws.close();
