zoukankan      html  css  js  c++  java
  • nodejs 遍历目录

    var fs = require("fs"),
        path = require("path");
    
    function walk(dir, callback) {
        fs.readdir(dir, function(err, files) {
            if (err) throw err;
            files.forEach(function(file) {
                var filepath = path.join(dir, file);
                fs.stat(filepath, function(err,stats) {
                    if (stats.isDirectory()) {
                        walk(filepath, callback);
                    } else if (stats.isFile()) {
                        callback(filepath, stats);
                    }
                });
            });
        });
    }

    import fs from 'fs';
    import path from 'path';
    
    
    function walk(dir) {
      return new Promise((resolve, reject) => {
        fs.readdir(dir, (error, files) => {
          if (error) {
            return reject(error);
          }
          Promise.all(files.map((file) => {
            return new Promise((resolve, reject) => {
              const filepath = path.join(dir, file);
              fs.stat(filepath, (error, stats) => {
                if (error) {
                  return reject(error);
                }
                if (stats.isDirectory()) {
                  walk(filepath).then(resolve);
                } else if (stats.isFile()) {
                  resolve(filepath);
                }
              });
            });
          }))
          .then((foldersContents) => {
            resolve(foldersContents.reduce((all, folderContents) => all.concat(folderContents), []));
          });
        });
      });
    }

    es6版本

    const fs = require('fs').promises;
    const path = require('path');
    
    async function walk(dir) {
        let files = await fs.readdir(dir);
        files = await Promise.all(files.map(async file => {
            const filePath = path.join(dir, file);
            const stats = await fs.stat(filePath);
            if (stats.isDirectory()) return walk(filePath);
            else if(stats.isFile()) return filePath;
        }));
    
        return files.reduce((all, folderContents) => all.concat(folderContents), []);
    }
    
    
    
     

     3 批量处理文件

    const fs = require('fs').promises;
    const path = require('path');
    const EventEmitter = require('events');
    
    let emitter = new EventEmitter();
    
    async function walk(dir) {
        let files = await fs.readdir(dir);
        files = await Promise.all(files.map(async file => {
            const filePath = path.join(dir, file);
            const stats = await fs.stat(filePath);
            if (stats.isDirectory()) return walk(filePath);
            else if(stats.isFile()) return filePath;
        }));
    
        return files.reduce((all, folderContents) => all.concat(folderContents), []);
    }
    var walker=walk('.');
    
    
    walker.then(function(files){
        files.map(function(file){
            if(file.indexOf('.vmCmp')<0){
                return;
            }
            let content = fs.readFile(path.join('.',file),'UTF-8');
            content.then(function(data){
                console.log(file)
                //console.log(data);
            })
        });
    })
    //阻塞进程 放置退出
    process.stdin.resume();

    const fs = require('fs').promises;const path = require('path');const EventEmitter = require('events');
    let emitter = new EventEmitter();
    async function walk(dir) {    let files = await fs.readdir(dir);    files = await Promise.all(files.map(async file => {        const filePath = path.join(dir, file);        const stats = await fs.stat(filePath);        if (stats.isDirectory()) return walk(filePath);        else if(stats.isFile()) return filePath;    }));
        return files.reduce((all, folderContents) => all.concat(folderContents), []);}var walker=walk('.');
    walker.then(function(files){files.map(function(file){if(file.indexOf('.vmCmp')<0){return;}let content = fs.readFile(path.join('.',file),'UTF-8');content.then(function(data){console.log(file)//console.log(data);})});})
    process.stdin.resume();

  • 相关阅读:
    《高校后勤管理信息系统设计与实现》论文笔记五
    《高校后勤管理系统的设计与实现》论文笔记三
    《高校后勤管理系统的设计与实现》论文笔记二
    如何利用React.js开发出强大Web应用
    关于啤酒和尿布故事的真相
    以生活例子说明单线程与多线程
    未来哪些领域WiFi将成为刚需?
    CSS开发中的10个不要
    10年后编程还有意义吗?
    JavaEE中遗漏的10个最重要的安全控制
  • 原文地址:https://www.cnblogs.com/wolbo/p/11872788.html
Copyright © 2011-2022 走看看