node.js中fs文件系统目录操作与文件信息操作


Posted in Javascript onFebruary 24, 2018

目录操作

  • 如果存在该目录,就创建失败
  • 同步创建目录fs.mkdirSync(path, [mode])
const fs = require('fs');
let mkdir = './mkdir';
fs.mkdir(mkdir, (err) => {
  if (err) {
    console.log(`mkdir ${mkdir} file failed~`);
  } else {
    console.log(`mkdir ${mkdir} file success~`);
  }
});

读取目录

  • 如果读取的目录下有子目录或子文件,将会把子目录或子文件的文件名作为files的数组元素
  • 同步读取目录fs.readdirSync()
const fs = require('fs');
let mkdir = './mkdir';
fs.mkdir(mkdir, (err) => {
  if (err) {
    console.log(`mkdir ${mkdir} file failed~`);
    return false;
  }
  console.log(`mkdir ${mkdir} file success~`);
  let fileName = ['ONE', 'TWO', 'THREE'];
  fileName.forEach((elem) => {
    fs.mkdir(`${mkdir}/${elem}`, (err) => {
      if (err) {
        console.log(`${mkdir}/${elem} failed~`);
        return false;
      }
    });
    fs.readdir(mkdir, (err, files) => {
      if (err) {
        console.log(`readdir ${mkdir} file failed~`);
        return false;
      }
      console.log(`readdir ${mkdir} file success~`);
      console.log(`${files}`);
    });
  });
});

查看与修改文件或目录信息

  • 在fs模块中,可以使用stat方法或者lstat方法查看一个文件或一个目录。唯一区别在于当查看符号链接文件的信息时,必须使用lstat方法。
  • fs.stat(path, callback(err, stats))
  • fs.lstat(path, callback(err, stats))

查看文件信息

同步方法查看文件信息fs.statSync(path);

const fs = require('fs');
let mkdir = './mkdir';

fs.stat(mkdir, (err, stats) => {
  if (err) {
    console.log(`fs.stats ${mkdir} file failed~`);
  } else {
    console.log(`fs.stats ${mkdir} file success~`);
    console.log(stats);
  }
});

stats详解

Stats {
 dev: 2050,文件或目录所在的设备ID,仅在UNIX有效
 mode: 16877,使用数值形式代表的文件或目录的权限标志
 nlink: 3,文件或目录的硬连接数量
 uid: 0,文件或目录的所有者的用户ID,仅在UNIX有效
 gid: 0,文件或目录的所有者的用户组ID,仅在UNIX有效
 rdev: 0,为字符设备文件或块设备文件所在设备ID,仅在UNIX有效
 blksize: 4096,
 ino: 4197533,文件或目录的索引编号,仅在UNIX有效
 size: 4096,文件尺寸,即文件中的字节数
 blocks: 8,
 atimeMs: 1511846425357.986,
 mtimeMs: 1511846425256.986,
 ctimeMs: 1511846425256.986,
 birthtimeMs: 1511846425256.986,
 atime: 2017-11-28T05:20:25.358Z,文件的访问时间
 mtime: 2017-11-28T05:20:25.257Z,文件的修改时间
 ctime: 2017-11-28T05:20:25.257Z,文件的创建时间
 birthtime: 2017-11-28T05:20:25.257Z 
}

fstat方法查询文件信息

使用open方法或openSync方法打开文件并返回文件描述符时,可以使用fs模块中的fstat方法查询被打开的文件信息

const fs = require('fs');
let mkdir = './mkdir';

fs.open(mkdir, 'r', (err, fd) => {
  if (err) {
    console.log(`open ${mkdir} file failed~`);
    return false;
  }
  fs.fstat(fd, (err, stats) => {
    if (err) {
      console.log(`fstat ${mkdir} file failed~`);
      return false;
    }
    console.log(JSON.stringify(stats));
  })
})

fs.fstat结果

{
  "dev": 1041887651,
  "mode": 16822,
  "nlink": 1,
  "uid": 0,
  "gid": 0,
  "rdev": 0,
  "ino": 4222124650663107,
  "size": 0,
  "atimeMs": 1519394418412.3062,
  "mtimeMs": 1519394418412.3062,
  "ctimeMs": 1519394418412.3062,
  "birthtimeMs": 1519394418402.2554,
  "atime": "2018-02-23T14:00:18.412Z",
  "mtime": "2018-02-23T14:00:18.412Z",
  "ctime": "2018-02-23T14:00:18.412Z",
  "birthtime": "2018-02-23T14:00:18.402Z"
}

检查文件或目录是否存在

参数为boolean类型的值

const fs = require('fs');
let mkdir = './mkdir';
fs.exists(mkdir, (exits) => {
  if (exits) {
    console.log(`${exits}, ${mkdir} file exists`);
  } else {
    console.log(`${exits}, ${mkdir} file not exists`)
  }
});

修改文件访问时间及修改时间

  • fs.utimes(path, atime, mtime, callback(err))
  • 同步修改文件访问时间及修改时间fs.utimesSync(path, atime, mtime)
// 修改文件访问时间及修改时间都为当前时间
const fs = require('fs');
let mkdir = './mkdir';
fs.utimes(mkdir, new Date(), new Date(), (err) => {
  if (err) {
    console.log(`fs.utimes ${mkdir} file failed~`);
  } else {
    console.log(`fs.utimes ${mkdir} file success~`);
  }
})

修改文件或目录的权限

  • 同步修改文件或目录的权限fs.chmodSync(path, mode);
  • fs.chmod(path, mode, callback(err))
  • mode代表的是权限的大小
  • fs.chmod方法触发前的权限是drwxr-xr-x.
  • fs.chmod方法触发后的权限是drw-------.
const fs = require('fs');
let mkdir = './mkdir';
fs.chmod(mkdirOne, '0600', (err) => {
  if (err) {
    console.log(`fs.chmod ${mkdir} file failed`);
    return false;
  }
  console.log(`fs.chmod ${mkdir} file success~`);
});

在使用open方法或openSync方法打开文件并返回文件描述符之后,可以使用fs模块中的fchmod方法修改文件的读写权限

const fs = require('fs');
let mkdir = './mkdir';
fs.open(mkdir, 'r', (err, fd) => {
  if (err) {
    console.log(`open file ${mkdir} failed~`);
    return false;
  }
  fs.fchmod(fd, '0600', (err) => {
    if (err) {
      console.log(`fs.fchmod ${mkdir} file failed~`);
      return false;
    }
    console.log(`fs.fchmod ${mkdir} file success~`);
  })
});
Javascript 相关文章推荐
js跟随滚动条滚动浮动代码
Dec 31 Javascript
Extjs TriggerField在弹出窗口显示不出问题的解决方法
Jan 08 Javascript
jquery选择checked在ie8普通模式下的问题
Feb 12 Javascript
JavaScript解析json格式数据简单示例
Dec 09 Javascript
JavaScript中文件上传API详解
Apr 01 Javascript
第三篇Bootstrap网格基础
Jun 21 Javascript
JavaScript数据结构中串的表示与应用实例
Apr 12 Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
Aug 17 Javascript
layui点击数据表格添加或删除一行的例子
Sep 12 Javascript
Vue如何获取数据列表展示
Dec 11 Javascript
VUE中使用HTTP库Axios方法详解
Feb 05 Javascript
Vue监视数据的原理详解
Feb 24 Vue.js
jQuery动态添加li标签并添加属性和绑定事件方法
Feb 24 #jQuery
使用puppeteer破解极验的滑动验证码
Feb 24 #Javascript
Vue的elementUI实现自定义主题方法
Feb 23 #Javascript
elementui的默认样式修改方法
Feb 23 #Javascript
详解plotly.js 绘图库入门使用教程
Feb 23 #Javascript
angular基于ng-alain定义自己的select组件示例
Feb 23 #Javascript
搭建element-ui的Vue前端工程操作实例
Feb 23 #Javascript
You might like
php Memcache 中实现消息队列
2009/11/24 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
php实现批量修改文件名称的方法
2016/07/23 PHP
探究Laravel使用env函数读取环境变量为null的问题
2016/12/06 PHP
浅谈Laravel中的三种中间件的作用
2019/10/13 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
jQuery中click事件的定义和用法
2014/12/20 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
JavaScript获取当前网页最后修改时间的方法
2015/04/03 Javascript
jQuery标签编辑插件Tagit使用指南
2015/04/21 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
探究JavaScript函数式编程的乐趣
2015/12/14 Javascript
jQuery选择器实例应用
2017/01/05 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
2017/05/26 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
浅谈js中的this问题
2017/08/31 Javascript
layui 给数据表格加序号的方法
2018/08/20 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
在layui中select更改后生效的方法
2019/09/05 Javascript
JS实现打字游戏
2019/12/17 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
Python Sleep休眠函数使用简单实例
2015/02/02 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
酒店司机岗位职责
2013/12/14 职场文书
毕业生班级鉴定评语
2015/01/04 职场文书
会计简历自我评价
2015/03/10 职场文书
应聘教师自荐信
2015/03/26 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL
PHP中strval()函数实例用法
2021/06/07 PHP