版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
fs模块
在nodejs中,提供了fs模块,这是node的核心模块
注意:
- 除了global模块中的内容可以直接使用,其余模块都是需要加载的
- fs模块不是全局模块,所以需要导入
const fs = require('fs');
读取文件
语法:fs.readFile(path[, options], callback)
第一个参数:读取文件的路径
第二个参数:字符集(带[]表示可传可不传)
第三个参数:回调函数
方式一:不传编码参数
fs.readFile('data.txt', function (err, data) {
if (err) {
return console.log(err);
}
console.log(data.toString());//获取到buff对象,通过调用toString()转成字符串
});
//没设置编码,此时会返回一个二进制的buffer对象
关于buffer对象
- Buffer对象是Nodejs用于处理二进制数据的。
- 其实任意的数据在计算机底层都是二进制数据,因为计算机只认识二进制。
- 所以读取任意的文件,返回的结果都是二进制数据,即Buffer对象
- Buffer对象可以调用toString()方法转换成字符串。
方式二:传编码参数
fs.readFile('data.txt','utf8' function (err, data) {
if (err) {
return console.log(err);
}
console.log(data);//正常输出字符串
});
写文件
语法:fs.writeFile(file, data[, options], callback)
第一个参数:读取文件的路径
第二个参数:写入的内容
第三个参数:字符集(带[]表示可传可不传)
第四个参数:回调函数
fs.writeFile('data.txt', 'hello world', function(err){
if(err) {
return console.log("写入文件失败", err);
}
console.log("写入文件成功");
});
注意:
- 写文件的时候,会把原来的内容给覆盖掉
- 如果找不到写入文件,会默认创建一个文件
追加文件
语法:fs.appendFile(path, data[, options], callback)
第一个参数:读取文件的路径
第二个参数:追加的内容
第三个参数:字符集(带[]表示可传可不传)
第四个参数:回调函数
fs.appendFile('data.txt', '我是追加的内容', function(err){
if(err) {
return console.log("追加文件内容失败");
}
console.log("追加文件内容成功");
})
注意:
- 如果找不到追加内容的文件,会默认创建一个文件
文件同步与异步的说明
fs中所有的文件操作,都提供了异步和同步两种方式
异步方式:不会阻塞代码的执行
//异步方式
var fs = require("fs");
console.log(111);
fs.readFile('data.txt', 'utf8', function(err, data){
if(err) {
return console.log("读取文件失败", err);
}
console.log(data);
});
console.log("222");
//先输出111 ,在输出222 ,最后输出data
同步方式:会阻塞代码的执行
//同步方式
console.log(111);
var result = fs.readFileSync('data.txt', 'utf8');
console.log(result);
console.log(222);
//先输出111,在输出result,最后输出222
总结:同步操作使用虽然简单,但是会影响性能,因此尽量使用异步方法,尤其是在工作过程中。
其他api
方法 | 描述 |
---|---|
fs.readFile(path, callback) |
读取文件内容(异步) |
fs.readFileSync(path) |
读取文件内容(同步) |
fs.writeFile(path, data, callback) |
写入文件内容(异步) |
fs.writeFileSync(path, data) |
写入文件内容(同步) |
fs.appendFile(path, data, callback) |
追加文件内容(异步) |
fs.appendFileSync(path, data) |
追加文件内容(同步) |
fs.rename(oldPath, newPath, callback) |
重命名文件(异步) |
fs.renameSync(oldPath, newPath) |
重命名文件(同步) |
fs.unlink(path, callback) |
删除文件(异步) |
fs.unlinkSync(path) |
删除文件(同步) |
fs.mkdir(path, mode, callback) |
创建文件夹(异步) |
fs.mkdirSync(path, mode) |
创建文件夹(同步) |
fs.rmdir(path, callback) |
删除文件夹(异步) |
fs.rmdirSync(path) |
删除文件夹(同步) |
fs.readdir(path, option, callback) |
读取文件夹内容(异步) |
fs.readdirSync(path, option) |
读取文件夹内容(同步) |
fs.stat(path, callback) |
查看文件状态(异步) |
fs.statSync(path) |
查看文件状态(同步) |