1.什么是 fs 文件系統(tǒng)模塊
fs 模塊是 Node.js 官方提供的八孝、用來(lái)操作文件的模塊悼沿。它提供了一系列的方法和屬性,用來(lái)滿(mǎn)足用戶(hù)對(duì)文件的操作需求丧叽。
例如:
? fs.readFile() 方法,用來(lái)讀取指定文件中的內(nèi)容
? fs.writeFile() 方法公你,用來(lái)向指定的文件中寫(xiě)入內(nèi)容
如果要在 JavaScript 代碼中踊淳,使用 fs 模塊來(lái)操作文件,則需要使用如下的方式先導(dǎo)入它:
const fs = require('fs')
2.讀取指定文件中的內(nèi)容
1. fs.readFile() 的語(yǔ)法格式
使用 fs.readFile() 方法陕靠,可以讀取指定文件中的內(nèi)容迂尝,語(yǔ)法格式如下:
fs.readFile(path [,options], callback)
參數(shù)解讀:
? 參數(shù)1:必選參數(shù),字符串剪芥,表示文件的路徑垄开。
? 參數(shù)2:可選參數(shù),表示以什么編碼格式來(lái)讀取文件税肪。
? 參數(shù)3:必選參數(shù)溉躲,文件讀取完成后,通過(guò)回調(diào)函數(shù)拿到讀取的結(jié)果益兄。
2. fs.readFile() 的示例代碼
以 utf8 的編碼格式锻梳,讀取指定文件的內(nèi)容,并打印 err 和 dataStr 的值:
const fs = require('fs')
fs.readFile('要讀取的文件地址',"utf8",function(err,dataStr){
console.log(err)
console.log('-----')
console.log(dataStr)
})
3. 判斷文件是否讀取成功
可以判斷 err 對(duì)象是否為 null净捅,從而知曉文件讀取的結(jié)果:
const fs = require('fs')
fs.readFile('要讀取的文件地址', 'utf8', function(err, dataStr) {
if (err) {
return console.log('讀取文件失斠煽荨!' + err.message)
}
console.log('讀取文件成功蛔六!' + dataStr)
})
3.向指定的文件中寫(xiě)入內(nèi)容
1. fs.writeFile() 的語(yǔ)法格式
使用 fs.writeFile() 方法荆永,可以向指定的文件中寫(xiě)入內(nèi)容,語(yǔ)法格式如下:
fs.writeFile(file, data [,options ], callback)
參數(shù)解讀:
? 參數(shù)1:必選參數(shù)国章,需要指定一個(gè)文件路徑的字符串具钥,表示文件的存放路徑。
? 參數(shù)2:必選參數(shù)捉腥,表示要寫(xiě)入的內(nèi)容氓拼。
? 參數(shù)3:可選參數(shù),表示以什么格式寫(xiě)入文件內(nèi)容,默認(rèn)值是 utf8桃漾。
? 參數(shù)4:必選參數(shù)坏匪,文件寫(xiě)入完成后的回調(diào)函數(shù)。
2. fs.writeFile() 的示例代碼
向指定的文件路徑中撬统,寫(xiě)入文件內(nèi)容:
const fs = require('fs')
fs.writeFile('要寫(xiě)入的文件地址', 'Hello Node.js', function(err) {
console.log(err)
})
3. 判斷文件是否寫(xiě)入成功
可以判斷 err 對(duì)象是否為 null适滓,從而知曉文件寫(xiě)入的結(jié)果:
const fs = require('fs')
fs.writeFile('要寫(xiě)入的文件地址', '要寫(xiě)入的內(nèi)容', function(err) {
if (err) {
return console.log('文件寫(xiě)入失敗恋追!' + err.message)
}
console.log('文件寫(xiě)入成功凭迹!')
})
4.案例練習(xí) - 考試成績(jī)整理
使用 fs 文件系統(tǒng)模塊,將素材目錄下成績(jī).txt文件中的考試數(shù)據(jù)苦囱,整理到成績(jī)-ok.txt文件中嗅绸。
整理前,成績(jī).txt文件中的數(shù)據(jù)格式如下:
小紅=99 小白=100 小黃=70 小黑=66 小綠=88
整理完成之后撕彤,希望得到的成績(jī)-ok.txt文件中的數(shù)據(jù)格式如下:
小紅:99
小白:100
小黃:70
小黑:66
小綠:88
核心實(shí)現(xiàn)步驟
① 導(dǎo)入需要的 fs 文件系統(tǒng)模塊
② 使用 fs.readFile() 方法鱼鸠,讀取素材目錄下的 成績(jī).txt 文件
③ 判斷文件是否讀取失敗
④ 文件讀取成功后,處理成績(jī)數(shù)據(jù)
⑤ 將處理完成的成績(jī)數(shù)據(jù)羹铅,調(diào)用 fs.writeFile() 方法蚀狰,寫(xiě)入到新文件 成績(jī)-ok.txt 中
代碼如下:
// 1. 導(dǎo)入 fs 模塊
const fs = require('fs')
// 2. 調(diào)用 fs.readFile() 讀取文件的內(nèi)容
fs.readFile('../素材/成績(jī).txt', 'utf8', function(err, dataStr) {
// 3. 判斷是否讀取成功
if (err) {
return console.log('讀取文件失敗职员!' + err.message)
}
// console.log('讀取文件成功麻蹋!' + dataStr)
// 4.1 先把成績(jī)的數(shù)據(jù),按照空格進(jìn)行分割
const arrOld = dataStr.split(' ')
// 4.2 循環(huán)分割后的數(shù)組焊切,對(duì)每一項(xiàng)數(shù)據(jù)扮授,進(jìn)行字符串的替換操作
const arrNew = []
arrOld.forEach(item => {
arrNew.push(item.replace('=', ':'))
})
// 4.3 把新數(shù)組中的每一項(xiàng),進(jìn)行合并蛛蒙,得到一個(gè)新的字符串
const newStr = arrNew.join('\r\n')
// 5. 調(diào)用 fs.writeFile() 方法糙箍,把處理完畢的成績(jī),寫(xiě)入到新文件中
fs.writeFile('./files/成績(jī)-ok.txt', newStr, function(err) {
if (err) {
return console.log('寫(xiě)入文件失斍K睢深夯!' + err.message)
}
console.log('成績(jī)寫(xiě)入成功!')
})
})