文件系統(tǒng)模塊FileSystem
在使用文件系統(tǒng)模塊的前提就是必須require('fs')
- 第一步調(diào)用核心模塊require('fs');
- 同步Sync和異步的區(qū)別 同步?jīng)]有回調(diào)函數(shù)按部就班的走。異步則是可以直接執(zhí)行后面
- 文件路徑前面必須要加./因?yàn)榭缙脚_(tái)了。不加(./)WINDOWS認(rèn)得出但是Linux認(rèn)不出
- 文件路徑要么寫絕對(duì)路徑勺爱,要是相對(duì)路徑必須node到這個(gè)文件的文件夾下面這樣執(zhí)行才可以
- 關(guān)于第四條備注
cd d:/text
node text.js
這樣才能運(yùn)行
關(guān)于FileSystem的幾個(gè)參數(shù)
var fs = require('fs');
(1)fs.readFile(path,callback)
//異步讀取一個(gè)文件的全部?jī)?nèi)容
(1.1)fs.readFileSync(path,callback) //同步讀取一個(gè)文件的全部?jī)?nèi)容路徑最好用__filename或者_(dá)_dirname寫絕對(duì)路徑
var fs = require('fs');
fs.readFile('./text/2.txt',function(err,data){
//讀取失敗的時(shí)候
//if(err){throw err} //讀取失敗就拋出異常
console.log(data);
console.log(data.toString());
})
>結(jié)果<31 32 33 34 35>12345
(2)fs.writeFile(path,data,callback)同步就是fs.writeSync(path,data) 最好用__filename或者_(dá)_dirname寫絕對(duì)路徑
- 異步的將數(shù)據(jù)寫入一個(gè)文件,如果文件不存在則創(chuàng)建
- 如果文件存在則全部替換,data可以是string也可以是原生的buffer
var fs = require('fs');
fs.writeFile('./text/2.txt','測(cè)試數(shù)據(jù)',function(err,data){
console.log(err+"||"+data);
})
(3)fs.appendFile(path,data,callback)同步就是fs.appendFileSync(path,data)最好用__filename或者_(dá)_dirname寫絕對(duì)路徑
- 異步的將數(shù)據(jù)添加到一個(gè)文件的尾部,
- 如果文件不存在,則會(huì)創(chuàng)建一個(gè)新的文件,data可以是string也可以是buffer
var fs = require('fs');
fs.appendFile('./text/2.txt','今天怎么樣',function(err){
console.log(err)
})
(4)fs.exists(path,callback)同步就是fs.existsSync(path)
- 檢查指定路徑的文件或者文件是否存在一定注意他沒(méi)有返回值
var fs = require('fs');
fs.exists('./text/2.txt',function(data){
if(data){
console.log("文件已經(jīng)存在了")
}else
{
console.log("文件不存在");
}
})
(5)fs.rename(oldPath,newPath,callback)同步就是fs.renameSync(oldPath,newPath)
- 改變地址的方法
fs.rename('./text/2.txt','2.txt',function(err){
console.log(err);
})
(6) fs.stat(path,callback) 讀取文件的信息同步就是fs.statSync(path,callback)
- 查看文件的狀態(tài)
var fs = require('fs');
fs.stat('2.txt',function(err,data){
console.log(data);
})
(7) fs.unlink(path,callback)同步版本就是fs.unlinkSync(path)
- 刪除文件
FileSystem操作文件夾
- fs.mkdir(path,callback)同步版本fs.mkdirSync(path)
- fs.readdir(path,callback)同步版本fs.readdirSync(path)
- fs.rmdir(path,callback)同步版本 fs.rmdirSync(path)
- fs.readdir(path,callback)同步版本fs.readdirSync(path)
var fs = require('fs');
fs.mkdir('./text1',function(err){
console.log(err);
}) //創(chuàng)建目錄
fs.rmdir('./text1',function(err){
console.log(err);
}) //移除目錄
關(guān)于讀取的一個(gè)小DEMO
var fs = require('fs');
fs.readdir('./',function(err,data){
for(var i=0;i<data.length;i++)
{
var f = data[i]; //這里必須轉(zhuǎn)換一下复隆。否則下面輸出不了data[i];
fs.stat(f,function(err,data2){
switch(data2.mode)
{
case 16822:
console.log("[文件夾]:"+f);
break;
case 33206:
console.log("文件:"+f);
break;
default:
console.log("其他類型:"+f);
break;
}
});
}
})
前端自動(dòng)化的小DEMO拨匆,也就是運(yùn)行腳本后自動(dòng)創(chuàng)建text1下面的images js css還有index.html
var fs = require('fs');
var project = {"name":"text2",
"fileData":[
{
"name":"images",
"type":"dir"
},
{
"name":"js",
"type":"dir"
},
{
"name":"css",
"type":"dir"
},
{
"name":"index.html",
"type":"file",
"content":"<html><body>今天完成了</body></html>"
}
]
};
if(project.name)
{
fs.mkdir(project.name,function(err,data){
for(var i=0;i<project.fileData.length;i++)
{
if(project.fileData[i].type=="dir")
{
fs.mkdir(project.name+"/"+project.fileData[i].name,function(err,data){
console.log(err);
})
}else if(project.fileData[i].type=="file"){
fs.writeFile(project.name+"/"+project.fileData[i].name,project.fileData[i].content,function(err,data){
console.log(err);
})
}
}
})
}