fs模塊
在nodejs中,提供了fs模塊,這是node的核心模塊
注意:
- 除了global模塊中的內容可以直接使用,其餘模塊都是需要加載的
- fs模塊不是全局模塊,所以需要導入
const fs = require('fs');
讀取文件
語法:fs.readFile(path[, options], callback)
第一個參數:讀取文件的路徑
第二個參數:字符集(帶[]表示可傳可不傳)
第三個參數:回調函數
方式一:不傳編碼參數
fs.readFile('data.txt', function (err, data) {
if (err) {
return console.log(err);
}
console.log(data.toString());//獲取到buff對象,通過調用toString()轉成字符串
});
//沒設置編碼,此時會返回一個二進制的buffer對象
關於buffer對象
- Buffer對象是Nodejs用於處理二進制數據的。
- 其實任意的數據在計算機底層都是二進制數據,因爲計算機只認識二進制。
- 所以讀取任意的文件,返回的結果都是二進制數據,即Buffer對象
- Buffer對象可以調用toString()方法轉換成字符串。
方式二:傳編碼參數
fs.readFile('data.txt','utf8' function (err, data) {
if (err) {
return console.log(err);
}
console.log(data);//正常輸出字符串
});
寫文件
語法:fs.writeFile(file, data[, options], callback)
第一個參數:讀取文件的路徑
第二個參數:寫入的內容
第三個參數:字符集(帶[]表示可傳可不傳)
第四個參數:回調函數
fs.writeFile('data.txt', 'hello world', function(err){
if(err) {
return console.log("寫入文件失敗", err);
}
console.log("寫入文件成功");
});
注意:
- 寫文件的時候,會把原來的內容給覆蓋掉
- 如果找不到寫入文件,會默認創建一個文件
追加文件
語法:fs.appendFile(path, data[, options], callback)
第一個參數:讀取文件的路徑
第二個參數:追加的內容
第三個參數:字符集(帶[]表示可傳可不傳)
第四個參數:回調函數
fs.appendFile('data.txt', '我是追加的內容', function(err){
if(err) {
return console.log("追加文件內容失敗");
}
console.log("追加文件內容成功");
})
注意:
- 如果找不到追加內容的文件,會默認創建一個文件
文件同步與異步的說明
fs中所有的文件操作,都提供了異步和同步兩種方式
異步方式:不會阻塞代碼的執行
//異步方式
var fs = require("fs");
console.log(111);
fs.readFile('data.txt', 'utf8', function(err, data){
if(err) {
return console.log("讀取文件失敗", err);
}
console.log(data);
});
console.log("222");
//先輸出111 ,在輸出222 ,最後輸出data
同步方式:會阻塞代碼的執行
//同步方式
console.log(111);
var result = fs.readFileSync('data.txt', 'utf8');
console.log(result);
console.log(222);
//先輸出111,在輸出result,最後輸出222
總結:同步操作使用雖然簡單,但是會影響性能,因此儘量使用異步方法,尤其是在工作過程中。
其他api
方法 | 描述 |
---|---|
fs.readFile(path, callback) |
讀取文件內容(異步) |
fs.readFileSync(path) |
讀取文件內容(同步) |
fs.writeFile(path, data, callback) |
寫入文件內容(異步) |
fs.writeFileSync(path, data) |
寫入文件內容(同步) |
fs.appendFile(path, data, callback) |
追加文件內容(異步) |
fs.appendFileSync(path, data) |
追加文件內容(同步) |
fs.rename(oldPath, newPath, callback) |
重命名文件(異步) |
fs.renameSync(oldPath, newPath) |
重命名文件(同步) |
fs.unlink(path, callback) |
刪除文件(異步) |
fs.unlinkSync(path) |
刪除文件(同步) |
fs.mkdir(path, mode, callback) |
創建文件夾(異步) |
fs.mkdirSync(path, mode) |
創建文件夾(同步) |
fs.rmdir(path, callback) |
刪除文件夾(異步) |
fs.rmdirSync(path) |
刪除文件夾(同步) |
fs.readdir(path, option, callback) |
讀取文件夾內容(異步) |
fs.readdirSync(path, option) |
讀取文件夾內容(同步) |
fs.stat(path, callback) |
查看文件狀態(異步) |
fs.statSync(path) |
查看文件狀態(同步) |