资讯专栏INFORMATION COLUMN

Node.js学习之路06——fs文件系统之目录操作与文件信息

用户83 / 2157人阅读

6. 目录操作 6.1 创建目录

如果存在该目录,就创建失败

同步创建目录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~`);
    }
});
6.2 读取目录

如果读取的目录下有子目录或子文件,将会把子目录或子文件的文件名作为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}`);
        });
    });
});
7. 查看与修改文件或目录信息

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

fs.stat(path, callback(err, stats))

fs.lstat(path, callback(err, stats))

7.1 查看文件信息

同步方法查看文件信息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 
}
7.2 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"
}
7.3 检查文件或目录是否存在

参数为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`)
    }
});
7.4 修改文件访问时间及修改时间

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~`);
    }
})
7.5 修改文件或目录的权限

同步修改文件或目录的权限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~`);
    })
});

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/110128.html

相关文章

  • Node.js学习07——fs文件系统文件目录执行的其他操作

    摘要:如果打开一个文件的符号链接文件进行编辑,操作系统将自动打开符号链接中所指向的原文件进行编辑,如果打开一个目录的符号链接文件进行文件的操作编辑或删除操作,则操作系统将西东打开符号链接中所指向的原目录并执行相应的操作。 8. 对文件或目录执行的其他操作 8.1 修改文件名字或移动文件目录fs.rename fs.rename(oldPath, newPath, callback(err...

    lordharrd 评论0 收藏0
  • Node.js学习05——fs文件系统文件的写入和读取

    fs文件系统 在Node.js中,提供一个fs模块,以实现文件及目录的读写操作。 1. 同步和异步方法 一般来讲,读取文件使用异步的方法,但是在读取例如系统配置文件时,应该使用同步的方法 2. 普通文件写入和读取 2.1 文件写入 2.1.1 写入一个基本的文本文件 如果不存在要写入的文件,那么将会自动创建一个文件 const fs = require(fs); let writeData = T...

    leanote 评论0 收藏0
  • Node.js学习08——fs文件系统stream流的基本介绍

    摘要:中各种用于读取数据的对象对象描述用于读取文件代表客户端请求或服务器端响应代表一个端口对象用于创建子进程的标准输出流。如果子进程和父进程共享输入输出流,则子进程的标准输出流被废弃用于创建子进程的标准错误输出流。 9. stream流 fs模块中集中文件读写方法的区别 用途 使用异步方式 使用同步方式 将文件完整读入缓存区 readFile readFileSync 将文件部...

    BoYang 评论0 收藏0
  • Node.js学习14——Process进程

    摘要:在中,只支持单线程。在这种场合下,如果能够使用多进程,则可以为每个请求分配一个进程,从而可以更好地使用服务器端的资源。进程进程对象的属性用于运行应用程序的可执行文件的绝对路径的版本号及其各依赖的版本号当前运行的平台用于读入标准输入流的对象。 Process 在Node.js中,只支持单线程。但是在应用程序中,如果只使用单线程进行操作,从接收请求开始到返回响应为止的这段时间内可能存在很长...

    darry 评论0 收藏0

发表评论

0条评论

用户83

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<