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

该模块有如下这些方法:

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

  1. const fs = require('fs');
  2. fs.stat('test.html',function(err,stats){
  3. if(err){
  4. console.log(err);
  5. }else{
  6. console.log('文件:' + stats.isFile()); //true
  7. console.log('目录:' + stats.isDirectory()); //false
  8. }
  9. });

2、fs.mkdir():创建目录

接受如下几个参数:

  • path :将创建的目录路径
  • mode :目录权限(读写权限),默认0777
  • callback :回调,传递异常参数err
  1. fs.mkdir('css',function(err){
  2. if(err){
  3. console.log(err);
  4. }else{
  5. console.log("创建成功");
  6. }
  7. });

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。
  1. var str = "Hello Node.js";
  2. fs.writeFile('write.txt', str, 'utf8', function (err) {
  3. if (err) {
  4. console.log(err);
  5. }else{
  6. console.log("创建成功");
  7. }
  8. });

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

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

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

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

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

  1. fs.readFile('write.txt',function(err,data){
  2. if(err){
  3. console.log(err);
  4. }else{
  5. console.log(data.toString());
  6. }
  7. });

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

  1. fs.readdir('css',function(err,data){
  2. if (err){
  3. console.log(err);
  4. }else{
  5. console.log(data);
  6. }
  7. });

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

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

  1. fs.rename('html/index.html','html/news.html',function(err){
  2. if (err) {
  3. console.log(err);
  4. } else {
  5. console.log('修改名字成功');
  6. }
  7. })

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

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

  1. fs.rename('html/css/basic.css','html/style.css',function(err){
  2. if(err){
  3. console.log(err);
  4. return false;
  5. }
  6. console.log('剪切成功');
  7. })

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

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

  1. fs.rmdir('text',function(err){
  2. if(err){
  3. console.log(err);
  4. return false;
  5. }
  6. console.log('删除目录成功');
  7. })

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

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

  1. fs.unlink('index.txt',function(err){
  2. if(err){
  3. console.log(err);
  4. return false;
  5. }
  6. console.log('删除文件成功');
  7. })

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

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

  1. // 创建一个可以读取的流,读取文件 input.txt 中
  2. var readStream=fs.createReadStream('input.txt');
  3. var str='';/*保存数据*/
  4. var count=0; /*次数*/
  5. //触发data事件,开始取读数据
  6. readStream.on('data',function(chunk){
  7. str+=chunk;
  8. count++;
  9. })
  10. //触发end事件,读取完成
  11. readStream.on('end',function(chunk){
  12. console.log(count);
  13. console.log(str);
  14. })
  15. //读取失败
  16. readStream.on('error',function(err){
  17. console.log(err);
  18. })

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

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

  1. var data = '我是从数据库获取的数据,我要保存到文件中去\n';
  2. // 创建一个可以写入的流,写入到文件 output.txt 中
  3. var writerStream = fs.createWriteStream('output.txt');
  4. //开始写入数据
  5. writerStream.write(data,'utf8');
  6. //标记写入完成
  7. writerStream.end();
  8. //触发finish事件,完成写入
  9. writerStream.on('finish',function(){
  10. console.log('写入完成');
  11. })
  12. //失败
  13. writerStream.on('error',function(){
  14. console.log('写入失败');
  15. })

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

12、管道流读取

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

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

三、fs文件操作模块的更多相关文章

  1. nodejs零基础详细教程2:模块化、fs文件操作模块、http创建服务模块

    第二章  建议学习时间4小时  课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑 ...

  2. node.js零基础详细教程(2):模块化、fs文件操作模块、http创建服务模块

    第二章  建议学习时间4小时  课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑 ...

  3. 02-Node.js学习笔记-系统模块fs文件操作

    2.1.什么是系统模块 Node 运行环境提供的API,因为这些API都是以模块化的方式进行开发的,所有我们又称Node运行环境提供的API为系统模块 3.1系统模块fs文件操作 //f :file ...

  4. nodejs 文件操作模块 fs

    const fs=require("fs"); //文件操作 //创建目录 ./ 代表当前目录 ../ 代表上级目录fs.mkdir('./test',function(err){ ...

  5. nodejs文件操作模块FS(File System)常用函数简明总结(转)

    件系统操作相关的函数挺多的.首先可以分为两大类. 一类是异步+回调的. 一类是同步的. 在这里只对异步的进行整理,同步的只需要在函数名称后面加上Sync即可 1. 首先是一类最常规的读写函数,函数名称 ...

  6. node 学习笔记 - fs 文件操作

    本文同步自我的个人博客:http://www.52cik.com/2015/12/03/learn-node-fs.html 最近看到群里不少大神都开始玩 node 了,我感觉跟他们步伐越来越大了, ...

  7. Python(三)——文件操作

    在我们用语言的过程中,比如要往文件内进行读写,那么势必要进行文件操作,那么咋操作呢?用眼睛直接看么?今天就定个小目标,把文件读写那些事扯一扯 文件操作 把大象放进冰箱分几步? 第一步:打开冰箱 第二步 ...

  8. python3csv与xlsx文件操作模块(csv、xlsxwriter)

    一.csv模块实现csv文件操作 1.CSV介绍 CSV,全称为Comma-Separated Values,它以逗号分隔值,其文件以纯文本形式存储表格数据,该文件是一个字符序列,可以由任意数目的记录 ...

  9. 常用文件操作模块json,pickle、shelve和XML

    一.json 和 pickle模块 用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Js ...

随机推荐

  1. 洛谷 P2515 [HAOI2010]软件安装

    题目描述 现在我们的手头有N个软件,对于一个软件i,它要占用Wi的磁盘空间,它的价值为Vi.我们希望从中选择一些软件安装到一台磁盘容量为M计算机上,使得这些软件的价值尽可能大(即Vi的和最大). 但是 ...

  2. About the iOS File System

    两个维度: 1)是否给用户使用: 2)是否持久存储. During installation of a new app, the installer creates a number of conta ...

  3. CocosCreator工程内的命名

    命名结构总体的命名结构遵循以下格式 前缀-内容-尾缀 - 前缀:用来定义node的属性- 内容:node的名字- 尾缀:序列或状态1231. 前缀说明:在开始的时候定义/声明这个节点的属性前缀可以是一 ...

  4. strict说明

  5. Python基础3 函数 变量 递归 -DAY3

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 主要作用: 去重 关系测 ...

  6. jquery--cookie应用

    示例:发送手机验证码 防止页面刷新后,发送验证码按钮重置 注:橙色部分为后增加代码,为防止验证码等待期间用户退出或者切换到其他页面以至于很久之后回到当前页面倒计时还在的问题,加入时间对比,记录用户发送 ...

  7. CAD交互绘制圆(网页版)

    CAD绘制图像的过程中,画圆的情况是非常常见的,用户可以在控件视区点取任意一点做为圆心,再动态点取半径绘制圆. 主要用到函数说明: _DMxDrawX::DrawCircle 绘制一个圆.详细说明如下 ...

  8. 树状数组 || POJ 3321 Apple Tree

    一道dfs序+树状数组的题 因为并没有get到dfs序以及对树状数组也不熟练卡了很久orz dfs序: in和out是时间戳 dfs序可以将树转化成为一个序列,满足区间 -> 子树 然后就可以用 ...

  9. 什么是session?

    Session一般译作会话.从不同的层面看待session,它有着类似但不全然相同的含义.比如,在web应用的用户看来,他打开浏览器访问一个电子商务网站,登录.并完成购物直到关闭浏览器,这是一个会话. ...

  10. Java开发中常见的异常问题

    要调试程序,自然需要对程序中的常见的异常有一定的了解,因此在这里我将一些常见的Java程序中的异常列举出来给大家参考 AD: 作为一名开发者,Java程序员,很自然必须熟悉对程序的调试方法.而要调试程 ...