这篇文章主要介绍“Node.js中fs模块如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Node.js中fs模块如何使用”文章能帮助大家解决问题。
引入fs模块
var fs=require('fs');
1. fs.stat检测是文件还是目录
fs.stat('html/style.css', function (err, stats) { if (err) { console.log(err); return false; } console.log('文件:' + stats.isFile()); // true console.log('目录:' + stats.isDirectory()); // false })
2. fs.mkdir 创建目录
//接收参数:
//path 将创建的目录路径
//mode 目录权限(读写权限),默认0777
//callback 回调,传递异常参数err
fs.mkdir('css', function (err) { if (err) { console.log(err); return false; } console.log('创建目录成功');})
3. fs.writeFile 创建写入文件
//filename (String) 文件名称
//data (String | Buffer) 将要写入的内容,可以使字符串 或 buffer数据。
//options (Object) option数组对象,包含:
//· encoding (string) 可选值,默认 ‘utf8′,当data使buffer时,该值应该为 ignored。
//· mode (Number) 文件读写权限,默认值 438
//· flag (String) 默认值 ‘w'
//callback {Function} 回调,传递一个异常参数err。
fs.writeFile('t.txt', '你好nodejs', 'utf8', function (err) { if (err) { console.log(err); return false; } console.log('写入成功');})
4. fs.appendFile 追加文件
fs.appendFile('t.txt', '这是追加的内容', function (err) { if (err) { console.log(err); return false; } console.log('写入成功');})
5.fs.readFile 读取文件
fs.readFile('t.txt', function (err, data) { if (err) { console.log(err); return false; } console.log(data); console.log(data.toString());})
6.fs.readdir 读取目录
把目录下面的文件和文件夹都获取到
fs.readdir('html', function (err, data) { if (err) { console.log(err); return false; } console.log(data);})
7.fs.rename 重命名
1、改名
fs.rename('html/index.html', 'html/news.html', function (err) { if (err) { console.log(err); return false; } console.log('修改名字成功');})
2、剪切文件
fs.rename('html/style.css', 'html/test/basic.css', function (err) { if (err) { console.log(err); return false; } console.log('剪切成功');})
8. fs.rmdir 删除目录
这个方法只能删除目录,不可以删除文件
删除空目录
fs.rmdir('css', function (err) { if (err) { console.log(err); return false; } console.log('删除目录成功');})
9. fs.unlink 删除文件
fs.unlink('css/1.js', function (err) { if (err) { console.log(err); return false; } console.log('删除文件成功');})
10. fs.createReadStream 从文件流中读取数据
//流的方式读取文件var readStream = fs.createReadStream('input.txt');var str = '';//保存数据var count = 0;//次数readStream.on('data', function (chunk) { str += chunk; count++;}) //读取完成readStream.on('end', function (chunk) { console.log(count); console.log(str);}) //读取失败readStream.on('error', function (err) { console.log(err);})
11. fs.createWriteStream 写入文件
var data = '我是从数据库获取的数据,我要保存起来\n';// 创建一个可以写入的流,写入到文件 output.txt 中var writerStream = fs.createWriteStream('output.txt');for (var i = 0; i < 100; i++) { writerStream.write(data, 'utf8');}//标记写入完成writerStream.end();writerStream.on('finish', function () { console.log('写入完成');})//失败writerStream.on('error', function () { console.log('写入失败');})
12. 管道流
管道提供了一个输出流到输入流的机制。通常我们用于从一个流中获取数据并将数据传递到另外一个流中。
如上面的图片所示,我们把文件比作装水的桶,而水就是文件里的内容,我们用一根管子(pipe)连接两个桶使得水从一个桶流入另一个桶,这样就慢慢的实现了大文件的复制过程。
以下实例我们通过读取一个文件内容并将内容写入到另外一个文件中。
// 创建一个可读流var readerStream = fs.createReadStream('input.txt');// 创建一个可写流var writerStream = fs.createWriteStream('output.txt');// 管道读写操作// 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中readerStream.pipe(writerStream);console.log("程序执行完毕");
Demo
判断服务器上面有没有upload目录。没有创建这个目录
var fs = require('fs');fs.stat('upload', function (err, stats) { if (err) { // 没有这个目录 fs.mkdir('upload', function (error) { if (error) { console.log(error); return false; } console.log('创建成功'); }) } else { console.log('目录已经存在'); console.log(stats.isDirectory()); }})
关于“Node.js中fs模块如何使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。