🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
##目录操作 - 创建一个目录 ``` fs.mkdir(path[,model],callback) fs.mkdirSync(path[,model]) ``` - 删除一个空目录 ``` fs.rmdir(path,callback) fs.rmdirSync(path) ``` - 读取一个目录 ``` fs.readdir(path,callback(err,files)) fs.readdirSync(path) // => 返回files ``` ##例子 **打印当前目录所有文件** ``` // 打印当前目录所有文件 const fs = require('fs'); const path = require('path'); require('./proto.js'); // 获取当前有没有传入目标路径 var target = path.join(__dirname, process.argv[2] || './'); fs.readdir(target, (err, files) => { files.forEach(file=> { console.time(file); // console.log(path.join(target, file)); fs.stat(path.join(target, file), function(err, stats) { // stats.mtime. console.log(`${stats.mtime.format('yyyy/MM/dd HH:mm') }\t${stats.size}\t${file}`); console.timeEnd(file); }); }); }); ``` proto.js ``` /* * @Author: iceStone * @Date: 2016-01-07 22:28:04 * @Last Modified by: iceStone * @Last Modified time: 2016-01-07 22:28:12 */ 'use strict'; // 对Date的扩展,将 Date 转化为指定格式的String // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) // 例子: // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 // (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 Date.prototype.format = function(format) { //author: meizz let o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "H+": this.getHours(), //小时 "m+": this.getMinutes(), //分 "s+": this.getSeconds(), //秒 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 "f+": this.getMilliseconds() //毫秒 }; if (/(y+)/.test(format)) format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); for (let k in o) if (new RegExp("(" + k + ")").test(format)) format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); return format; }; ``` 创建目录 ``` // 创建文件夹 //创建目录的上级目录必须存在,否则创建失败 const fs = require('fs'); const path = require('path'); //成功 fs.mkdir(path.join(__dirname, 'demo1')); //报错,上级目录demo2不存在 fs.mkdir(path.join(__dirname, 'demo2/demo3'), (err) => { console.log(err); }); ``` **创建层级目录** 以模块的方式 步骤: 创建模块文件,定义模块成员,导出模块成员,载入模块,使用模块 module/mkdirs.js ``` // 创建层级目录 const fs = require('fs'); const path = require('path'); function mkdirs(pathname, callback) { // module.parent 拿到的是调用我的对象 index.js // console.log(module.parent); var root = path.dirname(module.parent.filename); pathname = path.isAbsolute(pathname) ? pathname : path.join(root, pathname) var relativepath = path.relative(root, pathname); var folders = relativepath.split(path.sep); try { var pre = ''; folders.forEach(folder => { try { // 如果不存在则读取不到文件内容则报错 fs.statSync(path.join(root, pre, folder)); } catch (error) { fs.mkdirSync(path.join(root, pre, folder)); } pre = path.join(pre, folder); }); callback && callback(null); } catch (error) { callback && callback(error); } } module.exports = mkdirs; ``` index.js ``` var mkdirs = require('./module/mkdirs'); var path = require('path'); mkdirs(path.join(__dirname, 'f1/f2/f3'), (err) => { console.log(err); }); ``` 注意__dirname,是运用文件所在的目录。