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确定对象类型方法
Mar 30 Javascript
Chosen 基于jquery的选择框插件使用方法
May 30 Javascript
jQuery如何防止这种冒泡事件发生
Feb 27 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
Feb 02 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
May 18 Javascript
微信小程序之小豆瓣图书实例
Nov 30 Javascript
VUE页面中加载外部HTML的示例代码
Sep 20 Javascript
iview table高度动态设置方法
Mar 14 Javascript
原生JS实现的简单小钟表功能示例
Aug 30 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
Oct 09 Javascript
Node.js+ELK日志规范的实现
May 23 Javascript
使用异步controller与jQuery实现卷帘式分页
Jun 18 jQuery
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
adodb与adodb_lite之比较
2006/12/31 PHP
php导入导出excel实例
2013/10/25 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
greybox——不开新窗口看新的网页
2007/02/20 Javascript
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
2010/03/04 Javascript
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
node.js中的fs.writeSync方法使用说明
2014/12/15 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
基于angular实现模拟微信小程序swiper组件
2017/06/11 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
python根据路径导入模块的方法
2014/09/30 Python
Python中字典映射类型的学习教程
2015/08/20 Python
简单实现python进度条脚本
2017/12/18 Python
Windows下python3.7安装教程
2018/07/31 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
使用python模拟命令行终端的示例
2019/08/13 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
Python实现括号匹配方法详解
2020/02/10 Python
python数据分析:关键字提取方式
2020/02/24 Python
HTML5 拖放(Drag 和 Drop)详解与实例代码
2017/09/14 HTML / CSS
英国家电直销:Appliances Direct
2016/09/22 全球购物
英国顶尖手表珠宝品牌独家授权经销商:HS Johnson
2020/10/28 全球购物
以太网Ethernet IEEE802.3
2013/08/05 面试题
大学生大二自我鉴定
2013/10/28 职场文书
社区创先争优承诺书
2014/08/30 职场文书
复兴之路观后感3000字
2015/06/02 职场文书
身份证丢失证明
2015/06/19 职场文书
排球赛新闻稿
2015/07/17 职场文书
创业计划书之宠物店
2019/09/19 职场文书
python实现socket简单通信的示例代码
2021/04/13 Python
Flask response响应的具体使用
2021/07/15 Python