fs模块用于文件的读写等操作。

该模块有如下这些方法:

1、fs.stat() : 检测是文件还是目录

const fs = require('fs');

fs.stat('test.html',function(err,stats){
if(err){
console.log(err);
}else{
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);
}else{
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。
var str = "Hello Node.js";
fs.writeFile('write.txt', str, 'utf8', function (err) {
if (err) {
console.log(err);
}else{
console.log("创建成功");
}
});

如果该文件不存在则创建该名称文件并写入数据。如果多次写入的话,那么后面写入的内容会覆盖前面写入的内容。

4、fs.appendFile():追加文件

用法与writeFile相同,只是对此写入的话不会覆盖之前的数据,而是在其后追加数据。

5、fs.readFile() :读取文件

回调函数中的data即包含了读取的数据。

fs.readFile('write.txt',function(err,data){
if(err){
console.log(err);
}else{
console.log(data.toString());
}
});

6、fs.readdir():读取目录,获取目录下面的文件和文件夹。

fs.readdir('css',function(err,data){
if (err){
console.log(err);
}else{
console.log(data);
}
});

不过这样只能获取第一级目录

7、fs.rename():重命名文件

fs.rename('html/index.html','html/news.html',function(err){
if (err) {
console.log(err);
} else {
console.log('修改名字成功');
}
})

这样就可以把index.html文件名修改为news.html

这个方法还可以实现文件剪切功能:

fs.rename('html/css/basic.css','html/style.css',function(err){

    if(err){
console.log(err);
return false;
}
console.log('剪切成功');
})

这样就可以把html/css/basic.css剪切到html/style.css

8、fs.redir():删除目录

fs.rmdir('text',function(err){
if(err){
console.log(err); return false;
}
console.log('删除目录成功');
})

这里的删除只能删除空目录。

9、fs.unlink():删除文件

fs.unlink('index.txt',function(err){

       if(err){
console.log(err);
return false;
}
console.log('删除文件成功');
})

10、fs.createReadStream():以流的方式读取数据

这种方式读取文件是分块读取的

// 创建一个可以读取的流,读取文件 input.txt 中
var readStream=fs.createReadStream('input.txt'); var str='';/*保存数据*/
var count=0; /*次数*/ //触发data事件,开始取读数据
readStream.on('data',function(chunk){
str+=chunk;
count++;
}) //触发end事件,读取完成
readStream.on('end',function(chunk){
console.log(count);
console.log(str);
}) //读取失败
readStream.on('error',function(err){
console.log(err);
})

这种读取方式很高效,适合取读大批量数据。如果所读数据量不是很大的话使用上面的readFile方法即可。

11、fs.createWriteStream():以流的方式写入文件

var data = '我是从数据库获取的数据,我要保存到文件中去\n';

// 创建一个可以写入的流,写入到文件 output.txt 中
var writerStream = fs.createWriteStream('output.txt'); //开始写入数据
writerStream.write(data,'utf8'); //标记写入完成
writerStream.end(); //触发finish事件,完成写入
writerStream.on('finish',function(){
console.log('写入完成');
}) //失败
writerStream.on('error',function(){
console.log('写入失败');
})

同样,如果要写入的文件不存在就创建该文件再写入。

12、管道流读取

管道提供了一个输出流到输入流的机制。通常我们用于从一个流中获取数据并将数据传递到另外的一个流中。

// 创建一个可读流,这是管道的输出端
var readerStream = fs.createReadStream('input.txt'); // 创建一个可写流,这是管道的输入端
var writerStream = fs.createWriteStream('output.txt'); // 管道读写操作
// 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
readerStream.pipe(writerStream); console.log("程序执行完毕");

最新文章

  1. 搞懂 SynchronizationContext(第一部分)【翻译】
  2. We refined export to Excel for SharePoint
  3. 限制帐号同时两处以上登录-ASP.NET
  4. python第一天
  5. 9x9乘法表输出[Java]
  6. c#中关键词out和ref的区别
  7. Javascript的"预编译"思考
  8. (转载)mysql中百万级数据插入速度测试
  9. 使用EF 的简单的增删改查
  10. map循环
  11. 创建TreeView控件
  12. 微服务--webapi实现,脱离iis,脱离tomcat
  13. 浅谈Kubernetes生产架构
  14. 学习poisson.c
  15. c#中的委託,匿名方法和lambda表達式
  16. 一些数学上的概念理解(持续更新qwq)
  17. 转:Java 集合详解
  18. LintCode #2 尾部的零
  19. POJ-1953 World Cup Noise(线性动规)
  20. 微信小程序开发之路之组件化

热门文章

  1. How the performance impacts your revenue-性能影响营收
  2. Linux服务器用iotop命令分析服务器磁盘IO情况
  3. vue项目中常用的一些公共方法
  4. 自制Jquery下拉框插件
  5. 云原生技术图谱 (CNCF Landscape)
  6. Hibernate-03 关联映射
  7. Android Studio中删除无效的字符串资源
  8. ionic小白的学习路之目录结构分析、创建组件、创建页面、页面跳转
  9. 【传智播客】Libevent学习笔记(二):创建event_base
  10. 优化UITableView