node.js 中的 fs 模块的使用

第三方包

// 使用 'mkdirp' npm包可以创建多级文件夹

Node.js内置的文件系统模块方法

let fs = require('fs');

// 1. 检测是文件还是目录
// fs.stat('./package.json', (err, data) => {
//     if (err) { console.log(err); return; }
//     console.log(`是文件:${data.isFile()}`);
//     console.log(`是目录:${data.isDirectory()}`);
// });

// 2. 创建目录
// fs.mkdir('./package', (err) => {
//     if (err) { console.log(err); return; }
//     console.log(`创建成功`);
// });

// 3. 读取目录
// fs.readdir('./css', (err, data) => {
//     if (err) { console.log(err); return; }
//     console.log(data);
// });

// 4. 写入文件,如果文件存在会执行替换
// fs.writeFile('./css/index3.css', '', (err) => {
//     if (err) { console.log(err); return; }
//     console.log(`写入成功`);
// });

// 5. 读取文件
// fs.readFile('./css/index2.css', (err, data) => {
//     if (err) { console.log(err); return; }
//     console.log(data.toString());
// });

// 6. 文件追加内容,如果文件存在会执行替换,如果不存在会创建文件
// fs.appendFile('./css/index2.css', 'body{color:red;}\nh1{font-weight:600;}', (err) => {
//     if (err) { console.log(err); return; }
//     console.log(`追加成功`);
// });

// 7. 重命名文件或文件夹
// fs.rename('./css/index3.css', './css/index.css', (err) => {
//     if (err) { console.log(err); return; }
//     console.log(`重命名成功`);
// });

// 8. 移动文件或文件夹并可同时重命名
// fs.rename('./css/index.css', './servers/index.css', (err) => {
//     if (err) { console.log(err); return; }
//     console.log(`移动成功`);
// });

// 9. 删除文件
// fs.unlink('./css/index.css', (err) => {
//     if (err) { console.log(err); return; }
//     console.log(`删除文件成功`);
// });

// 10. 删除文件夹,需要先清空文件夹下的文件
// fs.rmdir('./css', (err) => {
//     if (err) { console.log(err); return; }
//     console.log(`删除文件夹成功`);
// });

// 11. 从文件流中读取数据
// 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);
// });

// 12. 写入文件流
// let data = '我是从数据库获取的数据,我要保存起来';
// let writerStream = fs.createWriteStream('output.txt');
// writerStream.write(data, 'UTF8');
// writerStream.end();
// writerStream.on('finish', () => {
//     console.log('写入完成');
// });
// writerStream.on('error', (err) => {
//     console.log(err.stack);
// });

// 13. 管道流,实现文件内容的复制
// let readerStream = fs.createReadStream('input.txt');
// let writerStream = fs.createWriteStream('output.txt');
// readerStream.pipe(writerStream);
// console.log("程序执行完毕");

其他说明

// 管道提供了一个输出流到输入流的机制。通常我们用于从一个流中获取数据并将数据传递到另外一个流中。
// 如上面的图片所示,我们把文件比作装水的桶,而水就是文件里的内容,我们用一根管子(pipe)连接两个桶使得水从一个桶流入另一个桶,
// 这样就慢慢的实现了大文件的复制过程。
// 我们通过读取一个文件内容并将内容写入到另外一个文件中。

posted on 2020-04-30 17:17  完美前端  阅读(1370)  评论(0)    收藏  举报

导航