Node 中的 fs模块常用方法

文章类型:node

发布者:hp

发布时间:2022-11-07

fs(filesystem),该模块提供本地文件的读写能力,可以说,所有与文件的操作都是通过核心模块实现

const fs =require('fs');

这个模块对所有文件系统操作提供异步(不具有sync后缀)和同步(具有sync后缀)两种操作方式

一:文件读取

fs.readFileSync(同步读取

第一个参数为读取文件的路径或文件描述符

第二个参数为 options,默认值为 null,其中有 encoding(编码,默认为 null)和 flag(标识位,默认为 r),也可直接传入 encoding

const fs = require("fs");

let txt= fs.readFileSync("1111.txt");
let data = fs.readFileSync("11111.txt", "utf8");

console.log(txt); // <Buffer 48 64 6c>
console.log(data); // Hello 1111

fs.readFile(异步读取

前面参数readFileSync相同,多增加一个参数为回调函数,函数内有两个参数err(错误)和data(数据),该方法没有返回值,回调函数在读取文件成功后执行

const fs = require("fs");
fs.readFile("1111.txt", "utf8", (err, data) => {
if (!err) {
console.log(data); // Hello 123
}
});

二:文件写入

writeFileSync(同步写入

第一个参数为写入文件的路径或文件描述符

第二个参数为写入的数据,类型为 String 或 Buffer

第三个参数为 options,默认值为 null,其中有 encoding(编码,默认为 utf8)、 flag(标识位,默认为 w)和 mode(权限位,默认为 0o666),也可直接传入 encoding

const fs =require("fs");
fs.writeFileSync("2222.txt","Hello world 2222");

writeFile(异步写入

前面参数writeFileSync相同,多增加一个参数为回调函数,函数内有两个参数err(错误)和data(数据),该方法没有返回值,回调函数在读取文件成功后执行

const fs =require("fs");
fs.writeFile("2.txt","Hello world",err=>{});

appendFileSync(同步文件追加写入)

第一个参数为写入文件的路径或文件描述符

第二个参数为写入的数据,类型为 String 或 Buffer

第三个参数为 options,默认值为 null,其中有 encoding(编码,默认为 utf8)、 flag(标识位,默认为 a)和 mode(权限位,默认为 0o666),也可直接传入 encoding

const fs =require("fs");
fs.appendFileSync("333.txt"," world");

appendFile(异步文件追加写入)

前面参数appendFileSync相同,多增加一个参数为回调函数,函数内有两个参数err(错误)和data(数据),该方法没有返回值,回调函数在读取文件成功后执行

fs.appendFile("3.txt"," world",err=>{})

三:文件拷贝

copyFileSync(同步拷贝)

fs.copyFileSync("3.txt","4.txt");

copyFile(异步拷贝)

fs.copyFile("3.txt","4.txt",()=>{})

四:创建目录

(必须保证传入的路径前面的文件目录都存在,否则会抛出异常)

mkdirSync(同步创建)

fs.mkdirSync("a/b")

mkdir(异步创建)

fs.mkdir("a/b",err=>{2if(!err)console.log("创建成功")});

扩展:

在计算机中有关于文件的知识:

权限位 mode

标识位 flag

文件描述为 fd

权限位

标识位

文件描述为 fd

操作系统会为每个打开的文件分配一个名为文件描述符的数值标识,文件操作使用这些文件描述符来识别与追踪每个特定的文件

Window 系统使用了一个不同但概念类似的机制来追踪资源,为方便用户,NodeJS 抽象了不同操作系统间的差异,为所有打开的文件分配了数值的文件描述符

NodeJS 中,每操作一个文件,文件描述符是递增的,文件描述符一般从 3 开始,因为前面有 0、1、2三个比较特殊的描述符,分别代表 process.stdin(标准输入)、process.stdout(标准输出)和 process.stderr(错误输出)