fs 全称为 file system ,称之为 文件系统 ,是 Node.js 中的 内置模块 ,可以对计算机中的磁盘进行操作。
本章节会介绍如下几个操作:
1. 文件写入2. 文件读取3. 文件移动与重命名4. 文件删除5. 文件夹操作6. 查看资源状态
文件写入就是将 数据 保存到 文件 中,我们可以使用如下几个方法来实现该效果
语法:fs.writeFile(file, data[, options], callback)
/**
* 需求:
* 新建一个文件, 座右铭.txt, 写入内容, 三人行, 则必有我师焉
*/
//1. 导入 fs 模块
const fs = require('fs');
//2. 写入文件
fs.writeFile('./座右铭.txt', '三人行, 则必有我师焉', err => {
// err 写入失败: 错误对象 写入成功: null
if(err){
console.log('写入失败');
return;
}
console.log('写入成功');
});
console.log(1 + 1);
//同步写入
fs.writeFileSync('./data.txt', 'test');
console.log(1 + 1);
//1. 引入 fs 模块
const fs = require('fs');
// 2. 调用 appendFile
fs.appendFile('./座右铭.txt', ',择其善者而从之, 择期不善者而改之', err => {
//判断
if(err){
console.log('写入失败~~');
return;
}
console.log('追加写入成功');
});
fs.appendFileSync('./座右铭.txt', '\r\n温故而知新, 可以为师矣')
//writeFile 实现追加写入
fs.writeFile('./座右铭.txt', 'love love love',{flag: 'a'}, err => {
if(err) {
console.log('写入失败~');
return ;
}
console.log('写入成功');
});
/**
* 观书有感.txt
*/
//1. 导入 fs
const fs = require('fs');
//2. 创建写入流对象
const ws = fs.createWriteStream('./观书有感.txt');
//3. write
ws.write('半亩方塘一鉴开\r\n');
ws.write('天光云影共徘徊\r\n');
ws.write('问渠那得清如许\r\n');
ws.write('为有源头活水来\r\n');
//4. 关闭通道
// ws.close();
//1. 引入 fs 模块
const fs = require('fs');
//2. 异步读取
fs.readFile('./观书有感.txt', (err, data) => {
if(err) {
console.log('读取失败~~');
return;
}
console.log(data.toString());
});
//3. 同步读取
let data = fs.readFileSync('./观书有感.txt');
console.log(data.toString());
//1. 引入 fs 模块
const fs = require('fs');
//2. 创建读取流对象
const rs = fs.createReadStream('../资料/笑看风云.mp4');
//3. 绑定 data 事件 chunk 块儿 大块儿
rs.on('data', chunk => {
console.log(chunk.length); // 65536 字节 => 64KB
// console.log(chunk.toString()); // 65536 字节 => 64KB
});
//4. end 可选事件
rs.on('end', () => {
console.log('读取完成');
});
/**
* 需求:
* 复制『资料』文件夹下的『笑看风云.mp4』
*/
const fs = require('fs');
const process = require('process');
//方式一 readFile
//读取文件内容
// let data = fs.readFileSync('../资料/笑看风云.mp4');
// //写入文件
// fs.writeFileSync('../资料/笑看风云-2.mp4', data);
// console.log(process.memoryUsage()); // rss 110710784 字节 105MB
//方式二 流式操作
//创建读取流对象
const rs = fs.createReadStream('../资料/笑看风云.mp4');
//创建写入流对象
const ws = fs.createWriteStream('../资料/笑看风云-3.mp4');
//绑定 data 事件
// rs.on('data', chunk => {
// ws.write(chunk);
// });
// rs.on('end', () => {
// console.log(process.memoryUsage()); // 43106304 => 41M
// })
rs.pipe(ws);
//1. 导入 fs 模块
const fs = require('fs');
//2. 调用 rename 方法
fs.rename('./座右铭.txt', './论语.txt', err => {
if(err) {
console.log('操作失败~');
return;
}
console.log('操作成功');
});
//文件的移动
fs.rename('./data.txt', '../资料/data.txt', err => {
if(err) {
console.log('操作失败~');
return;
}
console.log('操作成功');
})
//1. 导入 fs 模块
const fs = require('fs');
//2. 调用 unlink 方法 unlinkSync
fs.unlink('./观书有感.txt', err => {
if(err) {
console.log('删除失败~');
return;
}
console.log('删除成功');
});
// 调用 rm 方法 14.4 rmSync
fs.rm('./论语.txt', err => {
if (err) {
console.log('删除失败~');
return;
}
console.log('删除成功');
})
//1. 导入 fs 模块
const fs = require('fs');
//2. 创建文件夹 mk make 制作 dir directory 文件夹
fs.mkdir('./html', err => {
if(err) {
console.log('创建失败~');
return;
}
console.log('创建成功');
});
//2-2 递归创建
fs.mkdir('./a/b/c', {recursive: true},err => {
if(err) {
console.log('创建失败~');
return;
}
console.log('创建成功');
});
//2-3 读取文件夹 read 读取 dir directory 文件夹
fs.readdir('../资料', (err, data) => {
if(err){
console.log('读取失败');
return;
}
console.log(data);
});
fs.readdir('./', (err, data) => {
if(err){
console.log('读取失败');
return;
}
console.log(data);
});
//2-4 删除文件夹 rm remove 移除
fs.rmdir('./html', err => {
if(err){
console.log('删除失败');
return;
}
console.log('删除成功');
});
//递归删除 不推荐使用
fs.rmdir('./a', {recursive: true},err => {
if(err){
console.log(err);
return;
}
console.log('删除成功');
});
//建议使用
fs.rm('./a', {recursive: true},err => {
if(err){
console.log(err);
return;
}
console.log('删除成功');
});
//1. 导入 fs 模块
const fs = require('fs');
//2. stat 方法 status 缩写 状态
fs.stat('../资料/笑看风云.mp4', (err, data) => {
if(err){
console.log('操作失败');
return;
}
// console.log(data);
// isFile
console.log(data.isFile());
// isDirectory
console.log(data.isDirectory());
});
//1. 导入 fs 模块
const fs = require('fs');
//相对路径
// fs.writeFileSync('./index.html', 'love');
// fs.writeFileSync('index.html', 'love');
// fs.writeFileSync('../index.html', 'love');
//绝对路径
// fs.writeFileSync('D:/index.html', 'love');
fs.writeFileSync('/index.html', 'love');
会根据终端运行node命令的路径位置不断变化
//
const fs = require('fs');
// 相对路径参照物: 命令行的工作目录
// fs.writeFileSync('./index.html', 'love');
//绝对路径 '全局变量' 保存的是: 所在文件的所在目录的绝对路径
// console.log(__dirname);
fs.writeFileSync(__dirname + '/index.html', 'love');