1.什么是 fs 文件系統(tǒng)模塊
fs 模塊是 Node.js 官方提供的、用來操作文件的模塊。它提供了一系列的方法和屬性,用來滿足用戶對文件的操作需求。
例如:
? fs.readFile() 方法,用來讀取指定文件中的內容
? fs.writeFile() 方法,用來向指定的文件中寫入內容
如果要在 JavaScript 代碼中,使用 fs 模塊來操作文件,則需要使用如下的方式先導入它:
const fs = require('fs')
2.讀取指定文件中的內容
1. fs.readFile() 的語法格式
使用 fs.readFile() 方法,可以讀取指定文件中的內容,語法格式如下:
fs.readFile(path [,options], callback)
參數解讀:
? 參數1:必選參數,字符串,表示文件的路徑。
? 參數2:可選參數,表示以什么編碼格式來讀取文件。
? 參數3:必選參數,文件讀取完成后,通過回調函數拿到讀取的結果。
2. fs.readFile() 的示例代碼
以 utf8 的編碼格式,讀取指定文件的內容,并打印 err 和 dataStr 的值:
const fs = require('fs')
fs.readFile('要讀取的文件地址',"utf8",function(err,dataStr){
console.log(err)
console.log('-----')
console.log(dataStr)
})
3. 判斷文件是否讀取成功
可以判斷 err 對象是否為 null,從而知曉文件讀取的結果:
const fs = require('fs')
fs.readFile('要讀取的文件地址', 'utf8', function(err, dataStr) {
if (err) {
return console.log('讀取文件失??!' + err.message)
}
console.log('讀取文件成功!' + dataStr)
})
3.向指定的文件中寫入內容
1. fs.writeFile() 的語法格式
使用 fs.writeFile() 方法,可以向指定的文件中寫入內容,語法格式如下:
fs.writeFile(file, data [,options ], callback)
參數解讀:
? 參數1:必選參數,需要指定一個文件路徑的字符串,表示文件的存放路徑。
? 參數2:必選參數,表示要寫入的內容。
? 參數3:可選參數,表示以什么格式寫入文件內容,默認值是 utf8。
? 參數4:必選參數,文件寫入完成后的回調函數。
2. fs.writeFile() 的示例代碼
向指定的文件路徑中,寫入文件內容:
const fs = require('fs')
fs.writeFile('要寫入的文件地址', 'Hello Node.js', function(err) {
console.log(err)
})
3. 判斷文件是否寫入成功
可以判斷 err 對象是否為 null,從而知曉文件寫入的結果:
const fs = require('fs')
fs.writeFile('要寫入的文件地址', '要寫入的內容', function(err) {
if (err) {
return console.log('文件寫入失敗!' + err.message)
}
console.log('文件寫入成功!')
})
4.案例練習 - 考試成績整理
使用 fs 文件系統(tǒng)模塊,將素材目錄下成績.txt文件中的考試數據,整理到成績-ok.txt文件中。
整理前,成績.txt文件中的數據格式如下:
小紅=99 小白=100 小黃=70 小黑=66 小綠=88
整理完成之后,希望得到的成績-ok.txt文件中的數據格式如下:
小紅:99
小白:100
小黃:70
小黑:66
小綠:88
核心實現步驟
① 導入需要的 fs 文件系統(tǒng)模塊
② 使用 fs.readFile() 方法,讀取素材目錄下的 成績.txt 文件
③ 判斷文件是否讀取失敗
④ 文件讀取成功后,處理成績數據
⑤ 將處理完成的成績數據,調用 fs.writeFile() 方法,寫入到新文件 成績-ok.txt 中
代碼如下:
// 1. 導入 fs 模塊
const fs = require('fs')
// 2. 調用 fs.readFile() 讀取文件的內容
fs.readFile('../素材/成績.txt', 'utf8', function(err, dataStr) {
// 3. 判斷是否讀取成功
if (err) {
return console.log('讀取文件失??!' + err.message)
}
// console.log('讀取文件成功!' + dataStr)
// 4.1 先把成績的數據,按照空格進行分割
const arrOld = dataStr.split(' ')
// 4.2 循環(huán)分割后的數組,對每一項數據,進行字符串的替換操作
const arrNew = []
arrOld.forEach(item => {
arrNew.push(item.replace('=', ':'))
})
// 4.3 把新數組中的每一項,進行合并,得到一個新的字符串
const newStr = arrNew.join('\r\n')
// 5. 調用 fs.writeFile() 方法,把處理完畢的成績,寫入到新文件中
fs.writeFile('./files/成績-ok.txt', newStr, function(err) {
if (err) {
return console.log('寫入文件失??!' + err.message)
}
console.log('成績寫入成功!')
})
})