美文网首页
NodeJS的fs模块(一)

NodeJS的fs模块(一)

作者: 前端开发_Eric | 来源:发表于2019-06-28 00:50 被阅读0次

fs模块是Node的一个内置模块,其中fs是File System的缩写,指的是文件系统。
同步的方法都有返回值,而异步的方法没有返回值,且参数都有一个回调函数。

介绍fs模块的方法前,先了解2个概念。

文件描述符fd
  • 操作系统会为每个打开的文件分配一个名为文件描述符的数值标识,文件操作使用这些文件描述符来识别与追踪每个特定的文件。
  • 在 NodeJS 中,每操作一个文件,文件描述符是递增的,文件描述符一般从 3 开始,因为前面有 012 三个比较特殊的描述符,分别代表 process.stdin(标准输入)、process.stdout(标准输出)和 process.stderr(错误输出)
标识符flag

NodeJS 中,flag代表着对文件的操作方式,如可读、可写等,不同的文件操作标识符有着不同含义。

  • r 读取文件,如果文件不存在则抛出异常。read
  • r+ 读取并写入文件,如果文件不存在则抛出异常。
  • rs 读取并写入文件,指示操作系统绕开本地文件系统缓存。
  • w 写入文件,文件不存在会被创建,存在则清空后写入。write
  • wx 写入文件,排它方式打开。
  • w+ 读取并写入文件,文件不存在则创建文件,存在则清空后写入。
  • wx+ 和 w+ 类似,排他方式打开。
  • a 追加写入,文件不存在则创建文件。append
  • ax 与 a 类似,排他方式打开。
  • a+ 读取并追加写入,不存在则创建。
  • ax+ 与 a+ 类似,排他方式打开。

fs模块的4个基本的方法: 读取、写入、拷贝、删除。

1、文件读取

Node中文件读取的方式主要有:

同步读取:fs.readFileSync(file,[options])

同步读取文件readFileSync方法有两个参数
第一个参数为读取文件的路径或文件描述符。
第二个参数为 options,默认值为 null,其中有 encoding(编码,默认为 null)和 flag(标识位,默认为 r),也可直接传入 encoding。
返回值为文件的内容,如果没有 encoding,返回的文件内容为 Buffer,如果有按照传入的编码解析。如下方当参数为‘utf8’时,会以utf8字符编码读取文件。

try {
  const data = fs.readFileSync('demo01.txt', 'utf8');
  console.log(data);
} catch(e) {
  throw e;
}

异步读取:fs.readFile(file,[options], callback(error, data))

异步读取,该方法没有返回值,它的前两个参数与readFileSync 相同,最后一个参数为回调函数,函数内有两个参数 err(错误)和 data(数据),回调函数在读取文件成功后执行,第二个参数也可以不传,通过toString()方法解析返回的数据。

fs.readFile('demo01.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

2、文件写入

Node中文件写入的方式主要有:

同步写入:fs.writeFileSync(file, data[, options])

  • 第一个参数为写入文件的路径或文件描述符;
  • 第二个参数为写入的数据,类型为 String 或 Buffer;
  • 第三个参数为 options,默认值为 null,其中有 encoding(编码,默认为 utf8)、 flag(标识位,默认为 w)和 mode(权限位,默认为 0o666),也可直接传入 encoding
const fs = require("fs");
fs.writeFileSync("./txt.txt", "Hello FS 你好");
let result = fs.readFileSync("./txt.txt", "utf8");

console.log(result); // Hello FS 你好

异步写入:fs.writeFile(file, data[, options], callback(error))

异步写入writeFile, 有四个参数

  • 异步写入方法 writeFilewriteFileSync 的前三个参数相同,最后一个参数为回调函数,函数内只有一个参数 err(错误),回调函数在文件写入数据成功后执行。
fs.writeFile('c:\\demo\a.txt', ‘hello,wolrd’, (error) => {
  console.log(error);
});

文件追加

同步追加 appendFileSync

  • 第一个参数为写入文件的路径或文件描述符;
  • 第二个参数为写入的数据,类型为 String 或 Buffer;
  • 第三个参数为 options,默认值为 null,其中有 encoding(编码,默认为 utf8)、 flag(标识位,默认为 a)和 mode(权限位,默认为 0o666),也可直接传入 encoding
const fs = require("fs");
fs.appendFileSync("./a.txt", "你好!");
let result = fs.readFileSync("./a.txt", "utf8");
console.log(result); // Hello FS 你好~

异步追加写入appendFile,有四个参数

异步追加写入方法 appendFileappendFileSync 的前三个参数相同,最后一个参数为回调函数,函数内有一个参数 err(错误),回调函数在文件追加写入数据成功后执行。

const fs = require("fs");
fs.appendFile("./a.txt", "2333", err => {
     if(!err) {
            fs.readFile("./a.txt", "utf8", (err, data) => {
            console.log(data); // Hello FS 你好2333
        });
    }
});

3、 文件拷贝

同步拷贝:fs.copyFileSync(src, dest[, flags])

  • src <string> | <Buffer> | <URL> 要拷贝的源文件名。
  • dest <string> | <Buffer> | <URL> 拷贝操作的目标文件名。
  • flags <number> 用于拷贝操作的修饰符。默认值: 0
    同步地将 src 拷贝到 dest。 默认情况下,如果 dest 已经存在,则覆盖它。 返回 undefined。
const fs = require('fs');
// 默认情况下将创建或覆盖目标文件。
fs.copyFileSync('源文件.txt', '目标文件.txt');
console.log('源文件已拷贝到目标文件');

异步拷贝:fs.copyFile(src, dest[, flags], callback)

与上面类似,异步拷贝比同步拷贝只是多了一个参数(回调函数)。

4、 文件删除

同步删除文件: fs.unlinkSync(path)

无返回值,unlinkSync 的参数为要删除文件的路径,如删除 node 目录下的 index.js 文件。

       const fs = require("fs");
       fs.unlinkSync("node/index.js");

异步删除文件: fs.unlink(path, callback)

unlink 方法的第一个参数与 unlinkSync 相同,最后一个参数为回调函数,函数中存在一个参数 err(错误),在删除文件操作后执行。

const fs = require("fs");
       fs.unlink("a/index.js", err => {
       if (!err) console.log("删除成功");
 });

fs.unlink() 不能用于目录。 要删除目录,则使用 fs.rmdir()
有关Node的fs模块,今天先分享到这,日后再更。

相关文章

  • fs的核心模块及方法

    fs的核心模块及方法 fs模块(http://nodejs.cn/api/)

  • nodejs-模块

    nodejs模块 一、nodejs模块分类 1.核心模块 Core Module、内置模块、原生模块 fs模块 p...

  • 6_Node 文件系统

    [toc] NodeJS 文件系统[fs 模块] 1.NodeJS 文件系统 NodeJS 文件系统被封装在fs模...

  • nodejs

    cannot find module fs/promises 在模块中,旧版nodejs是require("fs"...

  • node js(四)

    fs模块 fs概述 -在 NodeJS 中,所有与文件操作都是通过 fs 核心模块来实现的,包括文件目录的创建、删...

  • vue-cli脚手架基础实现

    commander chalk Inquirer.js nodejs fs、net模块

  • 9/12 课堂笔记

    nodejs的模块 nodejs文件操作 nodejs的io键盘交互 nodejsURL判断渲染模板 fs.wri...

  • NodeJS常用API

    一、http模块: 二、NodeJS的模块: 三、 fs模块 四、全局变量 五、path模块: 六、 mime模块...

  • nodejs——fs模块

    fs模块包含所有文件查询和处理的相关函数,用这些函数,可以查询文件信息,读写和关闭文件。 使用fs.stath函数...

  • NodeJS的fs模块(一)

    fs模块是Node的一个内置模块,其中fs是File System的缩写,指的是文件系统。同步的方法都有返回值,而...

网友评论

      本文标题:NodeJS的fs模块(一)

      本文链接:https://www.haomeiwen.com/subject/hlzyqctx.html