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 相关文章推荐
JavaScript 字符串连接性能优化
Dec 20 Javascript
js判断屏幕分辨率的代码
Jul 16 Javascript
jQuery中siblings()方法用法实例
Jan 08 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
Feb 05 Javascript
JS实现图片局部放大或缩小的方法
Aug 20 Javascript
详解XMLHttpRequest(一)同步请求和异步请求
Sep 14 Javascript
js 事件的传播机制(实例讲解)
Jul 20 Javascript
移动端触摸滑动插件swiper使用方法详解
Aug 11 Javascript
React Component存在的几种形式详解
Nov 06 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
Apr 02 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
Aug 26 Javascript
微信小程序中的上拉、下拉菜单功能
Mar 13 Javascript
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
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
2016/09/23 PHP
php创建多级目录与级联删除文件的方法示例
2019/09/12 PHP
PHP执行linux命令6个函数代码实例
2020/11/24 PHP
document.getElementById方法在Firefox与IE中的区别
2010/05/18 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
解析window.open的使用方法总结
2013/06/19 Javascript
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
推荐一款jQuery插件模板
2015/01/09 Javascript
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
详解js中class的多种函数封装方法
2016/01/03 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
js实现图片上传并预览功能
2018/08/06 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
2019/04/02 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
Json实现传值到后台代码实例
2020/06/30 Javascript
vue实现简单加法计算器
2020/10/22 Javascript
python实现矩阵乘法的方法
2015/06/28 Python
同时安装Python2 & Python3 cmd下版本自由选择的方法
2017/12/09 Python
使用django-crontab实现定时任务的示例
2018/02/26 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
Flask框架中request、请求钩子、上下文用法分析
2019/07/23 Python
python应用文件读取与登录注册功能
2019/09/23 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
大学生最常用的自我评价
2013/12/07 职场文书
装修五一活动策划案
2014/01/23 职场文书
《乡下孩子》教学反思
2014/04/17 职场文书
中层干部培训方案
2014/06/16 职场文书
机械专业求职信范文
2014/07/15 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
文明上网主题班会
2015/08/14 职场文书