<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 異步先序廣度刪除文件夾 ``` function rmdirp(dir,cb){ let dirs = [dir] ,index = 0; function rmdir(){ let current = dirs[--index]; if(current){ fs.stat(current,(err,stat)=>{ if(stat.isDirectory()){ fs.rmdir(current,rmdir); }else{ fs.unlink(current,rmdir); } }); } } !function next(){ if(index===dir.length)return rmdir(); //說明index停止增長,所有文件已遍歷完畢 let current = dirs[index++]; fs.stat(current,function(err,stat){ if(err)return cb(err); if(stat.isDirectory()){ fs.readdir(current,function(err,files){ dirs = [...dirs,...files.map(item=>path.join(current,item))]; }); }else{ next(); } }); }(); } ``` ## 異步先序深度刪除文件夾 ``` function rmdir(dir,cb){ fs.readdir(dir,function(err,files){ // 讀取到文件 function next(index){ if(index===files.length)return fs.rmdir(dir,cb); //=== 表示能遍歷的都遍歷完了,刪除該層目錄 let newPath = path.join(dir,files[index]); fs.stat(newPath,function(err,stats){ if(stats.isDirectory()){ // 如果是文件夾 // 要讀的是b里的第一個 而不是去讀c // 如果b里的內容沒有了 應該去遍歷c rmdir(newPath,()=>next(index++)); }else{ //刪除文件后繼續遍歷即可 fs.unlink(newPath,next(index++)); } }); } next(0); }); } ``` ## 遞歸創建文件夾 ``` function mkdirP(dir,cb){ let paths = dir.split('/'); // [a,b,c,d] //a a/b a/b/c function next(index){ if(index>paths.length){ return cb&&cb(); } let newPath = paths.slice(0,index).join('/'); fs.access(newPath,function(err){ if(err){ // 如果文件不存在就創建這個文件 fs.mkdir(newPath,function(err){ next(index++); }) }else{ next(index++); //說明已有文件夾,跳過繼續創建下一個文件夾 } }); } next(1) } ``` ## fs.constants ``` // fs.constants.F_OK - path is visible to the calling process. This is useful for determining if a file exists, but says nothing about rwx permissions. Default if no mode is specified. // fs.constants.R_OK - path can be read by the calling process. // fs.constants.W_OK - path can be written by the calling process. // fs.constants.X_OK - path can be executed by the calling process. This has no effect on Windows (will behave like fs.constants.F_OK). ``` ## atime、mtime、ctime、birthtime ![](https://box.kancloud.cn/80128f5ecf680f880eeb28283cea9258_1017x315.png) ## watchFile // fs.watchFile() // current 是當前狀態 prev是上一次的狀態 let fs = require('fs'); let path = require('path'); fs.watchFile(path.join(__dirname,'2.txt'),{ persistent:true ,interval:4000 },function(cur,prev){ console.log('cur.ctime:',cur.ctime); console.log('prev.ctime:',prev.ctime); if(Date.parse(cur.ctime)===0){ //當前文件時間沒有了 console.log('刪除'); }else if(Date.parse(prev.ctime)===0){ // 上一次沒有 現在有了 console.log('創建') }else{ console.log('修改') } }) // 文件不存在或則文件刪除時的cur.ctime都為0 // cur.ctime: 1970-01-01T00:00:00.000Z // prev.ctime: 1970-01-01T00:00:00.000Z // 刪除 // cur.ctime: 2018-03-20T14:57:48.236Z // prev.ctime: 1970-01-01T00:00:00.000Z // 創建 // 刪除時 // cur.ctime: 1970-01-01T00:00:00.000Z // prev.ctime: 2018-03-20T14:57:48.236Z // 刪除 //但文件刪除后又創建的cur.ctime為上一次刪除時的時間 // cur.ctime: 2018-03-20T14:58:06.894Z // prev.ctime: 2018-03-20T14:57:48.236Z // 修改 ## 創建文件 node中沒有直接創建文件的命令 但我們可以通過`fs.writeFile`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看