Nodejs再帰的にパスを作成する

3048 ワード

Nodejsは10年前に、原生は再帰的にファイルディレクトリを作成することをサポートしていませんでした.つまり、一つを作成すると、node/node/filesディレクトリが存在しない場合、直接にエラーが発生します.
記事の目次
  • 試験
  • Node 10.14.1バージョンおよび以上の
  • Node低バージョン
  • 1テスト
    const fs = require('fs');
    fs.mkdir('./study/node/files ', (err) => {
        if (err) throw err;
        console.log("mkdir success");
      });
    
    エラーを直接投げます.
    if (err) throw err;             ^
    Error: ENOENT: no such file or directory, mkdir 'C:\Users\ha.ha\Desktop\sample\test\study
    ode\files '
    2 Node 10.14.1バージョンおよび以上
    Nodejs 10原生は再帰的にディレクトリを作成することをサポートします.このパラメータを追加すればいいです.
    fs.mkdir(path [,options],callback)
    path  |  | 
    options  | 
    	recursive  Default: false
    	mode  Not supported on Windows. Default: 0o777.
    callback 
    
    最初のパラメータはパスで、2番目のパラメータは再帰的に作成するかどうかとパーミッションパラメータです.2番目のパラメータのうち、recursiveはtrueに設定されています.すなわち再帰的に作成することをサポートしています.
    const fs = require('fs');
    fs.mkdir('./study/node/files', {recursive: true}, (err) => {
        if (err) throw err;
    });
    
    上記のコードは10.14.1で利用可能なNode mkdir APIドキュメントをテストします.https://nodejs.org/dist/latest-v10.x/docs/api/fs.html#fs_fs_mkdir_path_optionscalback
    3 Node低バージョン案
    var fs = require("fs");  
    var path = require("path");  
      
    function mkdirs(dirname, callback) {  
        fs.exists(dirname, function (exists) {  
            if (exists) {  
                callback();  
            } else {  
                //console.log(path.dirname(dirname));  
                mkdirs(path.dirname(dirname), function () {  
                    fs.mkdir(dirname, callback);  
                });  
            }  
        });  
    } 
    
    mkdirs('./hello/world/teset', function(err){
        if (err) throw err;
    });
    
    //以上コード:RockeyCai