NodeJS的fs模块(一)

2019-06-28  本文已影响0人  前端开发_Eric

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

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

文件描述符fd
标识符flag

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

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])

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, 有四个参数

fs.writeFile('c:\\demo\a.txt', ‘hello,wolrd’, (error) => {
  console.log(error);
});

文件追加

同步追加 appendFileSync

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])

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模块,今天先分享到这,日后再更。

上一篇 下一篇

猜你喜欢

热点阅读