node.js之fs模組的功能
阿新 • • 發佈:2018-12-14
node.js 的 api 都挺好用的。
var http = require("http");
var fs = require("fs");
var server = http.createServer(function(req,res){
//不處理小圖示
if(req.url == "/favicon.ico"){
return;
}
fs.mkdir("./album/aaa");
});
server.listen(3000,"127.0.0.1");
fs.stat(path , callback); 可以返回資料夾的一個狀態。
var http = require("http"); var fs = require("fs"); var server = http.createServer(function(req,res){ //不處理小圖示 if(req.url == "/favicon.ico"){ return; } //stat檢測狀態 fs.stat("./album/aaa",function(err,data){ //檢測這個路徑,是不是一個資料夾 console.log(data.isDirectory()); }); }); server.listen(3000,"127.0.0.1");
var http = require("http"); var fs = require("fs"); var server = http.createServer(function(req,res){ //不處理小圖示 if(req.url == "/favicon.ico"){ return; } //儲存所有的資料夾 var wenjianjia = []; //stat檢測狀態 fs.stat("./album/aaa",function(err,data){ //檢測這個路徑,是不是一個資料夾 // console.log(data.isDirectory()); //顯示所有資料夾,檔案 fs.readdir("./album",function(err,files){ //files是個檔名的陣列,並不是檔案的陣列,表示./album這個資料夾中的所有東西 //包括檔案,資料夾 console.log(files); var length = files.length; for(var i = 0; i < files.length; i++){ var thefile = files[i]; //又要進行一次檢測 fs.stat("./album/" + thefilename,function(err,stats){ if(stats.isDirectory()){ wenjianjia.push(thefilename); } console.log(wenjianjia); }); } }) }); }); server.listen(3000,"127.0.0.1");
檢測是不是一個資料夾,他是一個非同步的語句,還沒檢測成功就執行下一次了。下個單位的時候,那個單位已經變了,file已經變成了bbb了。aaa的回撥函式說我檢測成功了,這個時候這個事件就加入進來了,就push進去了。
所以你會發現這個陣列出現了兩次bbb,而沒有aaa。這是因為在檢測aaa資料夾的時候,他是非同步的,他沒等結果返回呢,就檢測bbb了,所以他干擾了局部變數。