百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> Node.js学习笔记:获取文件信息
分享文章到:

Node.js学习笔记:获取文件信息

发布时间:01/15 来源: 浏览: 关键词:
获取文件信息是程序常用到了我们下面来看node.js获取文件信息的方法,有兴趣的和小编来看这篇关于Node.js学习笔记:获取文件信息教程吧。

一. 查看文件信息的方法:

fs.stat() && fs.lstat()
在fs模块中,可以使用fs.stat()方法或fs.lstat()方法查看一个文件或目录的信息,如文件的大小、创建时间、权限等信息。这两个方法的唯一区别是当查看符号链接文件的信息时,必须使用fs.lstat()方法。这两个方法的使用方式如下:

fs.stat(path, callback)
fs.lstat(path, callback)
这两个方法分别有对应的同步方式方法:

fs.statSync(path)
fs.lstatSync(path)
参数说明:

path: 被查看的文件或目录的完整路径;
callback:查看文件或目录信息操作完毕后执行的回调函数,如function(err, stats) { // 回调函数... }。在该回调函数中使用两个参数,其中err参数为操作失败时返回的错误对象,stats参数值为一个fs.Stats对象。
fs.fstat()

在使用fs.open()或fs.openSync()方法打开的文件并返回文件描述符后,可以使用fs.fstat()方法查询被打开文件的文件信息,使用方式如下:

fs.fstat(fd, callback)
fs.fstatSync(fd)
参数说明:

fd: 打开文件时返回的文件描述符。
二. fs.Stats对象

fs.Stats对象的方法如下:
(备注: 这些方法中均不使用任何参数)

stats.isFile(): 判断被查看对象是否是一个文件。如果是标准文件,返回true。是目录、套接字、符号连接、或设备等返回false。
stats. isDirectory(): 判断被查看对象是否是一个目录。如果是目录,返回true。
stats. isBlockDevice(): 判断被查看对象是否是一个块设备文件。 如果是块设备,返回true,大多数情况下类UNIX系统的块设备都位于/dev目录下。
stats. isCharacterDevice(): 判断被查看对象是否是一个字符设备文件。如果是字符设备,返回true。
stats. isSymbolicLink(): 判断被查看对象是否是一个符号链接文件。如果是符号连接,返回true。该方法仅在fs.lstat()方法的回调函数中有效。
stats.isFIFO(): 判断被查看对象是否是一个FIFO文件。如果是FIFO,返回true。FIFO是UNIX中的一种特殊类型的命令管道。该方法仅在LINUX系统下有效。
stats. isSocket(): 判断被查看对象是否是一个socket文件。 如果是UNIX套接字,返回true。该方法仅在LINUX系统下有效。
fs.Stats对象的属性如下:
dev: 文件或目录所在的设备ID。该属性值在UNIX系统下有效;
mode: 文件或目录的权限标志,采用数值形式表示;
nlink: 文件或目录的的硬连接数量;
uid: 文件或目录的所有者的用户ID。该属性值在UNIX系统下有效;
gid: 文件或目录的所有者的用户组ID。该属性值在UNIX系统下有效;
rdev: 字符设备文件或块设备文件所在设备ID。该属性值在UNIX系统下有效;**
ino: 文件或目录的索引编号。该属性值仅在UNIX系统下有效;
size: 文件的字节数;
atime: 文件或目录的访问时间;
mtime: 文件或目录的最后修改时间;
ctime: 文件或目录状态的最后修改时间;
birthtime: 文件创建时间,文件创建时生成。在一些不提供文件 birthtime 的文件系统中,这个字段会使用 ctime 或 1970-01-01T00:00Z 来填充;
三. 实例:

Node.js程序:

var fs = require('fs');

fs.stat('1.js', function (err, stats) {
    console.log("fs.Stats对象属性:\n");
    console.log(stats);
    console.log("fs.Stats对象方法:\n");

    console.log("isFile: " + stats.isFile());
    console.log("isDirectory: " + stats.isDirectory());
    console.log("isBlockDevice: " + stats.isBlockDevice());
    console.log("isCharacterDevice: " + stats.isCharacterDevice());
    console.log("isFIFO: " + stats.isFIFO());
    console.log("isSocket: " + stats.isSocket());
});
console打印值:

fs.Stats对象属性:
{ dev: -496596946,
  mode: 33206,
  nlink: 1,
  uid: 0,
  gid: 0,
  rdev: 0,
  blksize: undefined,
  ino: 844424930205688,
  size: 198,
  blocks: undefined,
  atime: 2016-07-14T10:08:48.737Z,
  mtime: 2016-07-28T00:30:59.199Z,
  ctime: 2016-07-28T00:30:59.199Z,
  birthtime: 2016-07-14T10:08:48.612Z
}
fs.Stats对象方法:
isFile: true
isDirectory: false
isBlockDevice: false
isCharacterDevice: false
isFIFO: false
isSocket: false

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有21人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板