基于node.js的fs核心模塊讀寫文件操作(實(shí)例講解)
node.js 里fs模塊
常用的功能
實(shí)現(xiàn)文件的讀寫 目錄的操作
- 同步和異步共存 ,有異步不用同步
- fs.readFile 都不能讀取比運(yùn)行內(nèi)存大的文件,如果文件偏大也不會(huì)使用readFile方法
- 文件大分流讀取,stream
- 引入fs模塊
- let fs=require('fs')
同步讀取文件
-fs.readFileSync('路徑',utf8);
let result=fs.readFileSync('./1.txt','utf8');
異步讀取文件,用參數(shù)err捕獲錯(cuò)誤
- fs.readFile('路徑','utf8',function(){})
fs.readFile('./name.txt','utf8',function(err,data){
if(err){
console.log(err)
}else{
console.log(data)
}
})
同步寫入文件
- fs.writeFileSync("路徑",寫入的數(shù)據(jù))
fs.writeFileSync("./1.txt",JSON.stringify({name:1}))
異步寫入文件
- fs.writeFile('路徑',寫入的數(shù)據(jù),callback)
fs.writeFile('./1.txt','aaaaa',function (err) {
if(err){
console.log(err);
}
})
讀寫文件寫一個(gè)拷貝實(shí)例
let fs=require("fs");
//同步拷貝
function copySync(source,target){
//同步讀取
let result=fs.readFileSync(source,'utf8');
//同步寫入
fs.writeFileSync(target,result);
}
copySync("./age.txt",'./1.txt');
//異步拷貝
function copy(sourse,target,callback){
//異步讀取
fs.readFile(sourse,'utf8',function(err,data){
if(err){
return callback(err)
}else{
//異步寫入
fs.writeFile(target,data,callback)
}
});
};
copy('./name.txt','./ss.txt',function(err){
if(err) return console.log(err);
console.log('拷貝成功')
})
判斷文件存不存在
- fs.existsSync('文件的路徑')
stat方法
fs.stat('文件路徑',function (err,stat) {
stat.isDirectory 看是不是文件夾
stat.isFile 看是不是文件
})
刪除文件夾
- fs.rmdir('文件夾路徑',function(){})
刪除文件
- fs.unlink('文件路徑',function(){})
//判斷文件存不存在
if(fs.existsSync('./b')){
fs.stat('./b',function (err,stat) {
//stat中的time是用來做服務(wù)器緩存
//stat.isDirectory看是不是文件夾 stat.isFile看是不是文件
if(stat.isDirectory()){
//刪除文件夾
fs.rmdir('./b',function(){})
}else{
//刪除文件
fs.unlink('./b',function(){});
}
})
}
利用遞歸寫一個(gè)文件夾依次創(chuàng)建
function md(url) {
let paths=url.split('/'); //將a/b/c拆分成數(shù)組['a','b','c']
let index=0;
function make(path){
if(index===paths.length+1){ // 如果到終點(diǎn),停止遞歸
return false;
}
if(!fs.existsSync(path)){ //不存在
//創(chuàng)建文件夾
fs.mkdir(path,function () {
make(paths.slice(0,++index).join('/'))
})
}else{ //存在
make(paths.slice(0,++index).join('/'))
}
}
make(paths[index++]) //先取出第一個(gè)
}
md('a/b/c/d');
以上這篇基于node.js的fs核心模塊讀寫文件操作(實(shí)例講解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Node.js Streams文件讀寫操作詳解
- node.js基于fs模塊對(duì)系統(tǒng)文件及目錄進(jìn)行讀寫操作的方法詳解
- Node.js實(shí)戰(zhàn)之Buffer和Stream模塊系統(tǒng)深入剖析詳解
- Node.js數(shù)據(jù)流Stream之Duplex流和Transform流用法
- Node.js數(shù)據(jù)流Stream之Readable流和Writable流用法
- node.js中stream流中可讀流和可寫流的實(shí)現(xiàn)與使用方法實(shí)例分析
- node.js使用stream模塊實(shí)現(xiàn)自定義流示例
- 深入淺出了解Node.js Streams
- Node.js中你不可不精的Stream(流)
- Node.js fs模塊(文件模塊)創(chuàng)建、刪除目錄(文件)讀取寫入文件流的方法
- Node.js從字符串生成文件流的實(shí)現(xiàn)方法
- node.js同步/異步文件讀寫-fs,Stream文件流操作實(shí)例詳解
相關(guān)文章
nodejs使用redis作為緩存介質(zhì)實(shí)現(xiàn)的封裝緩存類示例
這篇文章主要介紹了nodejs使用redis作為緩存介質(zhì)實(shí)現(xiàn)的封裝緩存類,涉及nodejs操作redis進(jìn)行緩存設(shè)置相關(guān)操作技巧,需要的朋友可以參考下2018-02-02
NodeJS連接MongoDB數(shù)據(jù)庫時(shí)報(bào)錯(cuò)的快速解決方法
下面小編就為大家?guī)硪黄狽odeJS連接MongoDB數(shù)據(jù)庫時(shí)報(bào)錯(cuò)的快速解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考2016-05-05
使用NodeJs 開發(fā)微信公眾號(hào)(三)微信事件交互實(shí)例
這篇文章主要介紹了使用NodeJs 開發(fā)微信公眾號(hào)(三)微信事件交互實(shí)例的相關(guān)資料,需要的朋友可以參考下2016-03-03
node.js cookie-parser之parser.js
這篇文章主要介紹node.js cookie-parser之parser.js,講解的比較詳細(xì),需要的朋友可以參考下。2016-06-06
如何使node也支持從url加載一個(gè)module詳解
這篇文章主要給大家介紹了關(guān)于如何使node也支持從url加載一個(gè)module的相關(guān)資料,文中通過示例代碼將實(shí)現(xiàn)的方法介紹非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧2018-06-06

