1. 程式人生 > >node.js的fs核心模組讀寫檔案操作 -----由淺入深

node.js的fs核心模組讀寫檔案操作 -----由淺入深

https://www.cnblogs.com/null11/p/7499091.html

node.js的fs核心模組讀寫檔案操作 -----由淺入深

node.js 裡fs模組

常用的功能

實現檔案的讀寫 目錄的操作

- 同步和非同步共存 ,有非同步不用同步


- fs.readFile 都不能讀取比執行記憶體大的檔案,如果檔案偏大也不會使用readFile方法
- 檔案大分流讀取,stream

- 引入fs模組

- let fs=require('fs')

同步讀取檔案

-fs.readFileSync('路徑',utf8);

let result=fs.readFileSync('./1.txt','utf8');

 

 

非同步讀取檔案,用引數err捕獲錯誤

 

- fs.readFile('路徑','utf8',function(){})

fs.readFile('./name.txt','utf8',function(err,data){
if(err){
console.log(err)
}else{
console.log(data)
}
})

同步寫入檔案

- fs.writeFileSync("路徑",寫入的資料)

 

fs.writeFileSync("./1.txt",JSON.stringify({name:1}))

非同步寫入檔案

- fs.writeFile('路徑',寫入的資料,callback)

fs.writeFile('./1.txt','aaaaa',function (err) {
if(err){
console.log(err);
}
})

讀寫檔案寫一個拷貝例項

複製程式碼

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是用來做伺服器快取
//stat.isDirectory看是不是資料夾 stat.isFile看是不是檔案
if(stat.isDirectory()){
//刪除資料夾
fs.rmdir('./b',function(){})
}else{
//刪除檔案
fs.unlink('./b',function(){});
}
})
}

複製程式碼

利用遞迴寫一個資料夾依次建立

 

複製程式碼

function md(url) {
    let paths=url.split('/'); //將a/b/c拆分成陣列['a','b','c']
    let index=0;
    function make(path){
        if(index===paths.length+1){ // 如果到終點,停止遞迴
            return false;
        }
        if(!fs.existsSync(path)){ //不存在
            //建立資料夾
            fs.mkdir(path,function () {
                make(paths.slice(0,++index).join('/'))
            })
        }else{ //存在
            make(paths.slice(0,++index).join('/'))
        }
    }
    make(paths[index++]) //先取出第一個
}
md('a/b/c/d');

複製程式碼