iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0

今天要學習的依然是 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 裡面惹!
是不是很輕鬆愉快啊!

今天就先到這邊
我們明天見
ㄅㄅ


上一篇
#7 - The Node Event Emitter
下一篇
#9 - Creating & Removing Directories
系列文
你遲早都要懂後端的 — Node.js 的學習筆記10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言