文件写入
//文件写入
//1. 引入 fs 模块
const fs = require('fs');
//2-1 异步API. 调用 fs 中的方法 write 写入 File 文件
fs.writeFile('./index.html', '若以色见我,以音声求我,是人行邪道,不能见如来\r\n', { flag: 'a' }, function (err) {
//判断 null
if (err) {
console.log('写入失败');
console.log('失败的错误为' + err);
return;
}
console.log('写入成功');
// console.log(111);
});
// console.log(222);
//2-2 同步API
// fs.writeFileSync('./app.css', '*{margin:0;padding:0}');
// fs.writeFileSync('./app.js', Date.now());
// console.log(Date.now());
//同步与异步的演示
// const arr = [1,2,3,4,5,6,9];
// arr.forEach(item => {
// // console.log(item * 10000);
// console.log(11);
// });
// setTimeout(() => {
// console.log(111);
// })
文件流的写入
//1. 引入 fs 模块
const fs = require('fs');
//2. 创建写入流对象
// const ws = fs.createWriteStream('./home.html');
const ws = fs.createWriteStream('./home.js');
//3. 执行写入
// ws.write('<html>');
// ws.write(`
// <head>
// <title>这是一个脚本创建的文件哦</title>
// </head>
// <body>
// <h1>哎呦 不错哦~</h1>
// </body>
// `)
// ws.write('</html>');
ws.write(`
const body = document.body;
body.style.background = 'pink';
setTimeout(() => {
alert('恭喜中奖啦!!!');
}, 1000);
`)
//4. 关闭写入流
ws.close();
writeFile 与 createWriteStream 使用场景
对于简单的写入次数较少的情况, 可以使用 writeFile , 如果是批量要写入的场景,使用 createWriteStream
文件读取
//1. 引入 fs 模块
const fs = require('fs');
//2-1. 调用方法读取内容
// fs.readFile('./home.html', (err, data) => {
// if(err){
// console.log('读取失败');
// console.log("错误的对象为");
// console.log(err);
// return;
// }
// //输出从文件中读取的内容
// console.log(data.toString());
// });
//2-2 同步读取
let result = fs.readFileSync('./index.html');
console.log(result.toString());
流式文件读取
//1. 引入 fs 模块
const fs = require('fs');
//2. 创建读取流对象
const rs = fs.createReadStream('./file/刻意练习.mp3');
//3. 绑定事件 when 当....时候 chunk 块 当读取完一块数据后 触发
rs.on('data', (chunk) => {
console.log(chunk.length);
});
// 读取流打开的时候触发
rs.on('open', () => {
console.log('读取流打开了');
});
流式读取文件并写入 (复制文件)
//复制文件
//1. 模块引入
const fs = require('fs');
//2. 创建流对象
const ws = fs.createWriteStream('./file/不二法门.mp3');
const rs = fs.createReadStream('./file/刻意练习.mp3');
//3. 绑定事件读取内容 方式一
// rs.on('data', chunk => {
// //写入文件
// ws.write(chunk);
// });
//pipe管道 方式二
rs.pipe(ws);
重命名
// 1. 引入模块
const fs = require('fs');
//2. 调用方法
// fs.rename('./home.js', './index.js', err => {
// if(err) throw err;
// console.log('重命名成功');
// });
// fs.rename('./index.html', './project/首页.html', err => {
// if(err) throw err;
// console.log('重命名成功');
// });
//同步API
fs.renameSync('./project/app.css', './project/index.css');
删除文件
//1. 引入 fs 模块
const fs = require('fs');
//2. 调用方法 异步
// fs.unlink('./project/index.js', err => {
// if(err) throw err;
// console.log('删除成功');//..
// });
//同步
fs.unlinkSync('./project/app.js');
文件夹操作
//文件夹操作
const fs = require('fs');
//创建文件夹
// fs.mkdir('./html', err => {
// if(err) throw err;
// console.log('创建成功');
// });
//读取文件夹 read 读取 dir 文件夹
// fs.readdir('./project', (err, files) => {
// if(err) throw err;
// //输出文件夹下的『文件列表』
// console.log(files);
// });
fs.readdir('d:/', (err, files) => {
if(err) throw err;
//输出文件夹下的『文件列表』
console.log(files);
});
//删除文件夹
// fs.rmdir('./project', {recursive: true},err => {
// console.log(err);
// });
路径问题
// fs 模块的路径问题
/**
* 路径的分类
* 绝对路径
* * D:/www/share/day05/代码/1-nodejs/write.js (windows)
* * C:/images/logo.png (windows)
* * /usr/root/www/website/index.html (linux)
* 相对路径
* * ./index.html
* * ../css/app.css 上一级目录中找 css/app.css
* * index.html 当前文件夹下的 index.html
*/
const fs = require('fs');
// fs.writeFileSync('D:\\www\\share\\day05\\课堂\\1-NodeJS\\代码\\3-文件系统\\index.html','abc');
//特殊的变量 『始终保存的是当前文件所在文件夹的绝对路径』
// console.log(__dirname);
fs.writeFileSync(__dirname + '/index.html','abc');
资源的状态
// stat 查看『资源的状态』
const fs = require('fs');
//查看文件状态
fs.stat('./file', (err, stats) => {
if(err) throw err;
//如果没有错
console.log('是否为文件夹' + stats.isDirectory());
console.log('是否为文件' + stats.isFile());
});