let fs = require('fs');
// 检测是文件还是目录
// 名字 回调函数
// fs.stat('./package.json', (err, data) => {
// if (err) { console.log(err);return;}
// console.log(`是文件:${data.isFile()}`);
// console.log(`是目录:${data.isDirectory()}`);
// })
// 创建目录
// 路径 权限(可以默认777 不填写) 回调函数
// fs.mkdir('./package', (err) => {
// if (err) {console.log(err);return;}
// console.log(`创建成功`);
// })
// 读取目录
// 路径 回调函数
// fs.readdir('./css', (err, data) => {
// if (err) {console.log(err);return;}
// console.log(data);
// })
// 写入文件 如果文件存在 会执行替换
// 路径 内容 回调函数
// fs.writeFile('./css/index3.css', '', (err) => {
// if (err) {console.log(err);return;}
// console.log(`写入成功`);
// })
// 读取文件
// 路径 回调函数
// fs.readFile('./css/index2.css', (err, data) => {
// if (err) {console.log(err);return;}
// console.log(data.toString());
// })
// 文件追加内容 如果文件存在会执行替换 如果不存在会创建文件
// 路径 内容 回调函数
// fs.appendFile('./css/index2.css', 'body{color:red;}\nh1{font-weight:600;}', (err) => {
// if (err) {console.log(err);return;}
// console.log(`追加成功`);
// })
// 重命名文件 或者 文件夹
// 路径 回调函数
// fs.rename('./css/index3.css', './css/index.css',(err) => {
// if (err) {console.log(err);return;}
// console.log(`重命名成功`);
// })
// 移动文件 或者 文件夹 可以一起重命名
// 路径 回调函数
// fs.rename('./css/index.css', './servers/index.css',(err) => {
// if (err) {console.log(err);return;}
// console.log(`移动成功`);
// })
// 删除文件
// 路径 回调函数
// fs.unlink('./css/index.css', (err) => {
// if (err) {console.log(err);return;}
// console.log(`删除文件成功`);
// })
// 删除文件夹 要先清空文件夹下的文件
// 路径 回调函数
// fs.rmdir('./css', (err) => {
// if (err) {console.log(err);return;}
// console.log(`删除文件夹成功`);
// })
// 删除文件夹 for循环删除文件 在删除文件夹
// 路径 回调函数
// fs.readdir('./css', (err, data) => {
// if (err) {console.log(err);return;}
// for (let i = 0; i < data.length; i++) {
// fs.unlink(`./css/${data[i]}`, (err) => {
// if (err) {console.log(err);return;}
// console.log(`删除文件成功`);
// })
// }
// fs.rmdir('./css', (err) => {
// if (err) {console.log(err);return;}
// console.log(`删除文件夹成功`);
// })
// console.log(data);
// })
// fs.createReadStream 从文件流中读取数据
// let fileReadStream = fs.createReadStream('data.json')
// let count=0;
// let str='';
// fileReadStream.on('data', (chunk) => {
// console.log(`${++count} 接收到:${chunk.length}`);
// str += chunk
// });
// fileReadStream.on('end', () => {
// console.log('--- 结束 ---');
// console.log(count);
// console.log(str);
// });
// fileReadStream.on('error', (error) => {
// console.log(error)
// });
// fs.createWriteStream 写入文件
// let data = '我是从数据库获取的数据,我要保存起来'; // 创建一个可以写入的流,写入到文件 output.txt 中
// let writerStream = fs.createWriteStream('output.txt'); // 使用 utf8 编码写入数据
// writerStream.write(data,'UTF8'); // 标记文件末尾
// writerStream.end(); // 处理流事件 --> finish 事件
// writerStream.on('finish', () => { /*finish - 所有数据已被写入到底层系统时触发。*/
// console.log('写入完成');
// })
// writerStream.on('error', function(err) {
// console.log(err.stack);
// });
// console.log('程序执行完毕');
// 管道流
// 创建一个可读流
// 管道提供了一个输出流到输入流的机制。通常我们用于从一个流中获取数据并将数据传 递到另外一个流中。
// 如上面的图片所示,我们把文件比作装水的桶,而水就是文件里的内容,我们用一根管子(pipe)连接两个桶使得水从一个 桶流入另一个桶,这样就慢慢的实现了大文件的复制过程。
// 我们通过读取一个文件内容并将内容写入到另外一个文件中。
// let readerStream = fs.createReadStream('input.txt'); // 创建一个可写流
// let writerStream = fs.createWriteStream('output.txt'); // 管道读写操作
// // 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
// readerStream.pipe(writerStream);
// console.log("程序执行完毕");