今天要學習的依然是 node.js 的core modules (就是內建的模組啦),主角是:fs
一個能讓我們讀寫檔案的功能!(其實這個 fs 還有其他的功能,只是我們今天先介紹他其中的讀寫功能)
起手式一樣,先把這個 fs require進來:const fs = require('fs');
然後新增一個 readme.txt的文字檔:
讀取檔案:fs.readFileSync (同步)、fs.readFile(非同步)
接著我們使用 readFileSync
這個 method 去讀取檔案的內容,要注意的是,這個 readFileSync
方法是同步的,所以若是下面還有其他 code ,要等讀取完才會繼續執行,若是想使用非同步的讀取,直接使用 readFile
即可:
const fs = require('fs');
// readFileSync 語法:fs.readFileSync('欲讀取的檔案名稱', '用什麼編碼讀')
let readMeSync = fs.readFileSync('readme.txt', 'utf8')
console.log(readMeSync)
// readFile 語法:fs.readFile('欲讀取的檔案名稱', '用什麼編碼讀', 'callback function(err, data)')
fs.readFile('readme.txt', 'utf8', (err, data) => {
console.log(data)
})
兩種做法都可以得到 readme.txt 檔案的內容:
“ yay ! you read me !!!!!!!!!! :) “
寫入檔案:fs.writeFileSync(同步)、fs.writeFile(非同步)
若是想要在檔案裡寫入內容,則是用 writeFileSync
:
const fs = require('fs');
// fs.writeFileSync(file, data[, options])
// writeFileSync 一樣有非同步的語法 writeFile
let readMeSync = fs.readFileSync('readme.txt', 'utf8')
fs. writeFileSync('writeme.txt', readMeSync )
這邊要注意的是,writeFileSync
會先搜尋有沒有跟這個名稱一樣的檔案,若是有則覆蓋原本內容,若是沒有會建立一個新檔案
若我們不想要檔案被覆蓋,純粹只想新增內容的話,使用fs.appendFile()
最後,我們將兩種方法結合試試:
const fs = require('fs');
fs.readFile('readme.txt', 'utf8', (err, data) => {
fs.writeFile('writeme.txt', data)
})
這樣就可以很簡單的就把 readme 的內容搬到 writeme 裡面惹!
是不是很輕鬆愉快啊!
今天就先到這邊
我們明天見
ㄅㄅ