0%

Node.js-fs文件系统模块

Node.js-fs文件系统模块

fs模块是Node.js官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。

如果要在JavaScript代码中,使用fs模块来操作文件,则需要使用如下的方式先导入它:

1
const fs=require("fs")

fs.readFile使用方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//导入fs模块,来操作文件
const fs = require("fs");
//调用fs模块的readFile方法读取文件
fs.readFile("./11/1.txt", "utf-8", function (err, data) {
//参数1:读取文件的存放路径
//参数2:读取文件的编码格式,一般默认为utf-8
//参数3:回调函数,err为错误信息,data为读取的文件内容
if (err) {
//打印失败信息
console.log(err);
} else {
//打印成功信息
console.log(data);
}
//如果读取成功,则err为null,data为读取的文件内容
//如果读取失败,则err为错误信息(错误对象),data为undefined
});

判断文件读取是否成功:可以判断err对象是否为null,从而知晓文件读取的结果:

1
2
3
4
5
6
7
8
const fs = require("fs");
fs.readFile("./11 /1.txt", "utf-8", function (err, data) {
if (err) {
console.log("读取文件失败"+err);
} else {
console.log("读取文件成功"+data);
}
});

fs.writeFile()使用:

格式:

1
2
3
4
5
fs.writeFile(file,data[,options],callback)
//参数一:必须参数,需要指定一个文件路径的字符串,表示文件存放路径
//参数二:必选参数,表示要写入的内容
//参数三:可选参数,表示一什么格式写入文件内容,默认值是utf8
//参数四:必选参数,文件写入完成后的回调函数

fs.writeFile()实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const fs = require("fs");

fs.writeFile("./11/2.txt", "hello world", function (err) {
//参数1:写入文件的存放路径
//参数2:写入文件的内容
//参数3:回调函数,err为错误信息

//如果写入成功,则err为null
//如果写入失败,则err为错误信息(错误对象)
if (err) {
console.log("写入文件失败" + err);
} else {
console.log("写入文件成功");
}
});

readFile和writeFile联合使用实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//步骤
//1.导入需要的fs文件系统模块
//2.调用fs模块的readFile方法读取文件
//判断读取是否成功
//文件读取成功后,处理文件数据
//将处理完的数据,调用fs模块的writeFile方法写入文件
const fs = require("fs");

fs.readFile("./11/3.txt", "utf-8", function (err, data) {
if (err) {
console.log("读取文件失败" + err);
} else {
console.log("读取文件成功" + data);
//先把文件中的数据,按照空格进行分割
const arr = data.split(" ");
//循环分割后的数组,对每一项数据,进行字符串的替换操作
const arrNew = [];
arr.forEach(item => {
//替换操作
arrNew.push(item.replace("=", ":"));
});
console.log(arr);
//把数组中的每一项,进行合并,得到一个新的字符串
const str = arrNew.join('\r\n');
console.log(str);
//调用fs模块的writeFile方法写入文件
fs.writeFile("./11/4.txt", str, function (err) {
if (err) {
console.log("写入文件失败" + err);
} else {
console.log("写入文件成功");
}
});
}
});

路径动态拼接问题:

在使用fs模块操作文件时,如果提供的操作路径是以./或../开头的相对路径时,很容易出现路径的动态拼接错误的问题。

原因:代码在运行的时候,会执行node命令时所处的目录,动态拼接出被操作文件的完整路径。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const fs = require("fs");
//出现了路径拼接错误问题。是因为提供了./或者../开头的相对路径。
//要解决这个问题,可以直接提供一个完整的文件存放路径。就行了。


//__dirname是node.js中的一个全局变量,它指向当前执行脚本所在的目录。
console.log(__dirname);
fs.readFile(__dirname+"/11/1.txt", "utf-8", function (err, data) {
if (err) {
console.log("读取文件失败" + err);
} else {
console.log("读取文件成功" + data);
}
});

path模块是Node.js官方提供的一个内置模块,用于处理文件路径。它提供了一些常用的文件路径处理方法用来解决路径拼接的问题。

例如,我们可以通过path.join()方法来拼接路径。

path.basename()方法返回一个路径的最后一部分,即文件名。

如果要在JavaScript代码中,使用path模块来处理路径,那么,我们需要在代码中,引入path模块。

const path = require(“path”);

路径拼接

path.join()方法,可以接受多个参数,并且每个参数都是一个字符串。

1
2
3
4
5
6
7
8
9
10
const pathstr = path.join('/a', '/b/c','../','./d','e');

console.log(pathstr);

//输出结果: /a/b/d/e

//path.basename()方法返回一个路径的最后一部分,即文件名。
const fpath = '/a/b/c/d/e.txt';
console.log(path.basename(fpath));
console.log(path.basename(fpath, '.txt'));