1. 程式人生 > >Node學習基礎(三) 之檔案的同步和非同步寫入操作(fs_檔案系統)

Node學習基礎(三) 之檔案的同步和非同步寫入操作(fs_檔案系統)

下面遇到看不懂的可以去看官方文件

首先引入fs模組

第二步開啟檔案

 官方文件格式是這樣 

path 檔案路徑  這裡例子裡是FileHello.txt  如果沒有這個檔案 所以他會自動建立 FileHello.txt

  1. fs-同步檔案寫入操作 
    //1.引入fs模組
    let fs = require('fs');
    //2.開啟檔案
    let fd = fs.openSync('FileHello.txt','w');
    //3.寫入內容
    fs.writeFileSync(fd, "你好我是第一句被寫入的話");
    //4.儲存並退出
    fs.closeSync(fd);*/

     

檔案。

flags可以是以下的值

‘r’ –   以讀取模式開啟檔案。
‘r+’ – 以讀寫模式開啟檔案。
‘rs’ – 使用同步模式開啟並讀取檔案。指示作業系統忽略本地檔案系統快取。
‘rs+’ – 以同步的方式開啟,讀取 並 寫入檔案。
 
‘w’ – 以讀取模式開啟檔案,如果檔案不存在則建立
‘wx’ – 和 ‘ w ‘ 模式一樣,如果檔案存在則返回失敗
‘w+’ – 以讀寫模式開啟檔案,如果檔案不存在則建立
‘wx+’ – 和 ‘ w+ ‘ 模式一樣,如果檔案存在則返回失敗
 
‘a’ – 以追加模式開啟檔案,如果檔案不存在則建立
‘ax’ – 和 ‘ a ‘ 模式一樣,如果檔案存在則返回失敗
‘a+’ – 以讀取追加模式開啟檔案,如果檔案不存在則建立
‘ax+’ – 和 ‘ a+ ‘ 模式一樣,如果檔案存在則返回失敗


mode    用於建立檔案時給檔案制定許可權,預設0666

 然後關閉檔案

執行就能在檔案中看到寫入的內容了 

 

 fs-非同步寫入檔案操作(重點)

//1.引入fs模組
let fs = require('fs');
//2.開啟檔案
fs.open('FileHello2','w',(err , fd)=>{

    //判斷是否出錯
    if(!err){
        //寫入檔案
        fs.writeFile(fd , "這是個測試的內容" ,(err)=>{
            if(!err){
                console.log("寫入檔案成功");
            }else{
                throw err;
            }

            //關閉檔案
            fs.close(fd, (err)=>{
                if(!err){
                    console.log("檔案已經儲存並關閉");
                }
            })
        });
    }else{
        throw err;
    }
});

//非同步訪問不會有結果,只能是回撥,非同步就是node的特色,非同步不會阻塞執行緒

一樣 先開啟檔案格式如下

 這裡的callback 就是我們非同步的重點了  和同步不同就在於這個非同步回撥

callback有兩個值err(錯誤)和 fd(檔案)

如果錯誤直接丟擲錯誤  

如果沒有繼續執行寫入檔案

然後執行我們的關閉檔案操作

關閉檔案在寫入檔案之後 

同樣的 callback

使用回撥判斷 

注意:非同步訪問不會有結果,只能是回撥,非同步就是node的特色,非同步不會阻塞執行緒