文章目录
- 概念:
- 文件写入
-
- [writeFile (异步写入)](#writeFile (异步写入))
- writeFileSync(同步写入)
- [appendFile (异步追加写入)](#appendFile (异步追加写入))
- appendFileSync(同步追加写入)
- [createWriteStream (文件流式写入)](#createWriteStream (文件流式写入))
- 文件读取
-
- [readFile (异步读取)](#readFile (异步读取))
- [readFileSync (同步读取)](#readFileSync (同步读取))
- [createReadStream (文件流式读取)](#createReadStream (文件流式读取))
- 复制文件
-
- copyFile (异步复制文件)
- [copyFileSync (同步复制文件)](#copyFileSync (同步复制文件))
- 文件(夹)移动与重命名
- 文件删除
-
- [unlink 或 rm(同步/异步)](#unlink 或 rm(同步/异步))
- 文件夹操作
- 查看资源状态
- __dirname
概念:
fs
全称为file system
,称之为文件系统
,是Node.js 中的 内置模块
,可以对计算机中的磁盘进行操作
文件写入
文件写入就是将
数据
保存到文件
中,我们可以使用如下几个方法来实现该效果
writeFile (异步写入)
语法
:
javascript
fs.writeFile(file, data[, options], callback)
参数说明:
file
写入的文件路径名data
写入的数据options
配置对象设置 (可选)callback
写入回调函数
示例
:
javascript
const fs = require("fs"); /** @导入fs模块 **/
fs.writeFile('./异步创建文件.txt', '给文件中插入一条数据', err => {
//如果写入失败,则回调函数调用时,会接收一个错误对象,如写入成功,会返回 null
if (err) {
console.log('写入失败');
return;
}
console.log('写入成功');
});
writeFileSync(同步写入)
语法
:
javascript
fs.writeFileSync(file, data[, options])
参数说明:
file
写入的文件路径名data
待写入的数据options
配置对象设置 (可选)- 注明:
同步写入没有回调函数
示例
:
javascript
const fs = require("fs"); /** @导入fs模块 **/
fs.writeFileSync('./同步创建文件.txt', '一段字符串')
appendFile (异步追加写入)
语法
:
javascript
fs.appendFile(file, data[, options], callback)
参数说明:
file
追加写入的文件路径名data
待追加写入的数据options
配置对象设置 (可选)callback
写入回调函数
示例
:
javascript
const fs = require("fs"); /** @导入fs模块 **/
fs.appendFile('./异步创建文件.txt', '异步追加文字', err => {
if (err) {
console.log('写入失败');
return;
} else {
console.log('写入成功');
}
})
appendFileSync(同步追加写入)
语法
:
javascript
fs.appendFileSync(file, data[, options])
参数说明:
file
文件名data
待追加写入的数据options
配置对象设置 (可选)- 注明:
同步追加写入没有回调函数
- 示例:
javascript
const fs = require("fs"); /** @导入fs模块 **/
fs.appendFileSync('./同步创建文件.txt', '同步追加一段字符串')
补充
:
writeFile
/writeFileSync
也可以实现追加写入,需要在第三个参数配置对象中写入{flag:' a '}
,就可以实现
createWriteStream (文件流式写入)
- 语法:
javascript
fs.createWriteStream(path[, options])
参数说明:
path
文件路径options
配置对象( 可选 )
返回值: Object
示例
:
javascript
const fs = require('fs');
let ws = fs.createWriteStream('./观书有感.txt');
ws.write('第一段文字\r\n');
ws.write('第二段文字\r\n');
ws.write('第三段文字\r\n');
ws.write('第四段文字\r\n');
ws.close(); //关闭流式写入
文件写入概括:
方法 | 描述 |
---|---|
writeFile |
异步写入 |
writeFileSync |
同步写入 |
appendFile |
异步追加写入 |
appendFileSync |
同步追加写入 |
createWriteStream |
流式写入 |
文件读取
readFile (异步读取)
语法
:
javascript
fs.readFile(path[, options], callback)
参数说明:
path
文件路径options
选项配置callback
回调函数
示例
:
javascript
const fs = require('fs');
fs.readFile('./新建文件.txt', (err, data) => {
if (err) {
console.log("读取失败");
return;
} else {
console.log("读取成功");
console.log(data.toString());
}
})
fs.readFile('./新建文件.txt', 'utf-8', (err, data) => {
if (err) {
console.log("读取失败");
return;
} else {
console.log("读取成功");
console.log(data);
}
})
readFileSync (同步读取)
- 语法:
javascript
fs.readFileSync(path[, options])
参数说明:
path
文件路径options
选项配置(可选)
返回值: string
| Buffer
示例
:
javascript
const fs = require('fs');
let data = fs.readFileSync('./新建文件.txt');
let data2 = fs.readFileSync('./新建文件.txt', 'utf-8');
createReadStream (文件流式读取)
- 语法:
javascript
fs.createReadStream(path[, options])
参数说明:
path
文件路径options
选项配置
返回值: Object
示例:
javascript
const fs = require('fs');
//创建读取流对象
let rs = fs.createReadStream('./新建文件.txt');
//每次取出 64k 数据后执行一次 chunk 回调
//绑定 data 事件
rs.on('data', chunk => {
console.log(chunk);
console.log(chunk.length);
});
//读取完毕后, 执行 end 回调,关闭流式读取
rs.on('end', () => {
console.log('读取完成')
})
概述:
方法 | 描述 |
---|---|
readFile |
异步读取 |
readFileSync |
同步读取 |
createReadStream |
流式读取 |
复制文件
copyFile (异步复制文件)
复制文件这里的逻辑处理方法,有多种,你可以选择,先调用读取文件,再将读取到的文件调用写入方法,当然也可以直接调用 fs 的复制 Api
javascript
fs.copyFile('./散文集.txt', './文件.txt', err => {
if (err) throw err;
console.log('复制成功');
});
语法
javascript
fs.copyFile(src, dest[, options ], callback)
参数说明:
src
复制源文件当前的路径newPath
复制创建新文件的路径options
配置参数(可选)callback
操作后的回调
copyFileSync (同步复制文件)
javascript
fs.copyFileSync('./散文集.txt', './文件.txt');
参数同异步方法,只是没有回调函数
概述:
方法 | 描述 |
---|---|
copyFile |
异步复制 |
copyFileSync |
同步复制 |
文件(夹)移动与重命名
rename(异步/同步重命名/移动)
在 Node.js 中,我们可以使用
rename (异步)
或renameSync (同步)
来移动或重命名 文件或文件夹
语法
:
javascript
fs.rename(oldPath, newPath, callback); //异步更改
fs.renameSync(oldPath, newPath); //同步更改
参数说明:
oldPath
文件当前的路径newPath
文件新的路径callback
操作后的回调
示例:
javascript
const fs = require('fs');
fs.rename('./新建文件.txt', './资料/新建文件.txt', (err) => {
if (err) throw err;
console.log('移动完成')
});
fs.renameSync('./新建文件.txt', './资料/新建文件.txt');
补充
:当更改地址相对于原地址,处于同一目录,则为重命名
,反之修改后不在同一目录,则为移动
。
概述:
方法 | 描述 |
---|---|
rename |
异步重命名/移动 |
renameSync |
同步重命名/移动 |
文件删除
unlink 或 rm(同步/异步)
在 Node.js 中,我们可以使用
unlink
或rm
来删除文件
参数说明:
path
文件路径callback
操作后的回调
javascript
fs.rm('./同步创建文件.txt', (err) => {
if (err) {
console.log("删除失败");
return;
} else {
console.log("删除成功");
return;
}
})
fs.rmSync('./同步创建文件.txt');
fs.unlink('./同步创建文件.txt', (err) => {
if (err) {
console.log("删除失败");
return;
} else {
console.log("删除成功");
return;
}
})
fs.unlinkSync('./同步创建文件.txt');
概述:
方法 | 描述 |
---|---|
rm |
异步删除 |
rmSync |
同步删除 |
unlink |
异步删除 |
unlinkSync |
同步删除 |
文件夹操作
创建文件夹
在 Node.js 中,我们可以使用
mkdir
或mkdirSync
来创建文件夹
语法
javascript
fs.mkdir(path[, options], callback); //异步创建
fs.mkdirSync(path[, options]); //同步创建
参数说明:
path
文件夹路径options
选项配置( 可选 )callback
操作后的回调
示例
javascript
fs.mkdir('./page', err => {
if (err) throw err;
console.log('创建成功');
});
//递归层级异步创建
fs.mkdir('./1/2/3', {recursive: true}, err => {
if(err) throw err;
console.log('递归创建成功');
});
//递归同步创建文件夹
fs.mkdirSync('./x/y/z', {recursive: true});
读取文件夹
在 Node.js 中,我们可以使用
readdir
或readdirSync
来读取文件夹
语法
javascript
fs.readdir(path[, options], callback); //异步读取
fs.readdirSync(path[, options]); //同步读取
参数说明:
path
文件夹路径options
选项配置( 可选 )callback
操作后的回调
示例
javascript
//异步读取
fs.readdir('./page', (err, data) => {
if(err) throw err;
console.log(data);
});
//同步读取
let data = fs.readdirSync('page');
console.log(data);
删除文件夹
在 Node.js 中,我们可以使用
rmdir
或rm
来删除文件夹
示例
javascript
//异步删除文件夹
fs.rmdir('./page', err => {
if(err) throw err;
console.log('删除成功');
});
//异步递归删除文件夹
fs.rmdir('./1', {recursive: true}, err => {
if(err) {
console.log(err);
}
console.log('递归删除')
});
//同步递归删除文件夹
fs.rmdirSync('./x', {recursive: true})
//rm异步删除文件夹
fs.rm('./page', err => {
if(err) throw err;
console.log('删除成功');
});
//异步递归删除文件夹
fs.rm('./1', {recursive: true}, err => {
if(err) {
console.log(err);
}
console.log('递归删除')
});
//同步递归删除文件夹
fs.rmSync('./x', {recursive: true})
注明:
推荐使用 rm
,rmdir
后续可能将被移除
文件夹操作概括
方法 | 描述 |
---|---|
mkdir |
异步创建 |
mkdirSync |
同步创建 |
readdir |
异步读取文件夹 |
readdirSync |
同步读取文件夹 |
rmdir |
异步删除文件夹不推荐使用 |
rmdirSync |
同步删除文件夹不推荐使用 |
rm |
异步删除文件夹:推荐使用 |
rmSync |
同步删除文件夹推荐使用 |
查看资源状态
在 Node.js 中,我们可以使用
stat
或statSync
来查看资源的详细信息
示例:
javascript
//异步获取状态
fs.stat('./data.txt', (err, data) => {
if(err) throw err;
console.log(data);
});
//同步获取状态
let data = fs.statSync('./data.txt');
结果值对象结构:
size
文件体积birthtime
创建时间mtime
最后修改时间sFile
检测是否为文件isDirectory
检测是否为文件夹- ...
__dirname
🚵♂️ 博主座右铭:向阳而生,我还在路上!
🚴博主想说:将持续性为社区输出自己的资源,同时也见证自己的进步!
🤼♂️ 如果都看到这了,博主希望留下你的足迹!【📂收藏!👍点赞!✍️评论!】