是什么:nodejs提供的操作文件的模塊
fs.readFile()
fs.writeFile()
js中使用 fs模塊操作文件,先導入fs
const fs=require('fs')
fs.readFile() 讀取指定文件的內容
語法格式
fs.readFile(path[, options], callback)
path
:必選參數,字符串,表示文件路徑options
:配置選項,可選參數,若是字符串則指定編碼格式,表示以什么編碼格式讀取文件encoding
:編碼格式flag
:打開方式
callback
:必選參數,通過回調函數拿到讀取成功或失敗的結果err
:錯誤信息data
:讀取成功的數據,如果未指定編碼格式則返回一個 Buffer
例子
以utf-8格式讀取文件,并打印err和dataStr
const fs=require("fs");
fs.readFile('./fs.html','utf8',function(err,data){console.log(err);//null 讀取失敗的結果console.log(data);//hmtl文件內容 讀取成功的結果
})
fs.writeFile() 向指定文件中寫入內容
語法格式
fs.writeFile(file, data[, options], callback)
參數:
file: 必選,字符串 表示 文件的存放路徑
data:必選,表示要寫入內容
options:可選參數,以什么格式寫入內容,默認為utf8
callback:必選,文件寫入完成后的回調函數 ,callback中參數 err 寫入失敗的錯誤信息
const fs=require("fs");
fs.writeFile("./files/write.txt","007",'utf8',function(err){console.log(err);//null
})
寫入文件會自動創建,如果文件之前存在,會覆蓋之前內容
給文件追加寫入內容
const fs=require("fs");
fs.appendFile("./files/01.txt", "\r\n這是在01.txt文件內追加的內容", (err) => {if (err) {console.log("追加失敗!");} else {console.log("追加成功!");}});
復制文件
readFile 回調函數中 writeFile
const fs=require("fs");
fs.readFile('./files/a.txt','utf8',function(err,data){if(err){console.log("讀取失敗:"+err);} else {console.log(data);}fs.writeFile("./files/04.txt",data,'utf8',function(err){if(!err) {console.log("寫入成功");}})
})
路徑動態拼接問題 __dirname
- 在使用 fs 模塊操作文件時,如果提供的操作路徑是以
./
或../
開頭的相對路徑時,容易出現路徑動態拼接錯誤的問題 - 原因:代碼在運行的時候,會以執行 node 命令時所處的目錄,動態拼接出被操作文件的完整路徑
- 解決方案:在使用 fs 模塊操作文件時,直接提供完整的路徑,從而防止路徑動態拼接的問題
__dirname
獲取文件所處的絕對路徑,不包含文件
// __dirname 獲取文件所處的絕對路徑
// ../fs模塊 是相對路徑
console.log(__dirname);//D:\StudyAndhi\nodejs\fs模塊 獲取當前文件的絕對路徑
__dirname 好處,可在當前路徑下創建新的文件
參考:
https://brucecai55520.gitee.io/bruceblog/notes/nodejs/node.html#初識-nodejs