Node.js中fs模块的使用方法

 更新时间:2022年6月24日 13:08  点击:926 作者:小旭2021

引入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());
  }
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。

原文出处:https://www.cnblogs.com/chenyablog/p/9673801.html

[!--infotagslink--]

相关文章

  • 浅谈vue2的$refs在vue3组合式API中的替代方法

    这篇文章主要介绍了浅谈vue2的$refs在vue3组合式API中的替代方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-18
  • node.JS md5加密中文与php结果不一致怎么办

    这次文章要给大家介绍的是node.JS md5加密中文与php结果不一致怎么办,不知道具体解决办法的下面跟小编一起来看看。 因项目需要,需要Node.js与PHP做接口调用,发现nod...2017-07-06
  • 浅谈node.js中async异步编程

    1.什么是异步编程? 异步编程是指由于异步I/O等因素,无法同步获得执行结果时, 在回调函数中进行下一步操作的代码编写风格,常见的如setTimeout函数、ajax请求等等。示例: for (var i = 1; i <= 3; i++) {setTimeout(functi...2015-10-23
  • node.js+express留言板功能实现示例

    本文介绍基于nodejs+express+art-template的留言板功能。包含列表界面、添加界面和发送留言功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-21
  • NODE.JS加密模块CRYPTO常用方法介绍

    使用require('crypto')调用加密模块。加密模块需要底层系统提供OpenSSL的支持。它提供了一种安全凭证的封装方式,可以用于HTTPS安全网络以及普通HTTP连接。该模块还提供了一套针对OpenSSL的hash(哈希),hmac(密钥哈希),cipher...2014-06-07
  • 安装使用Mongoose配合Node.js操作MongoDB的基础教程

    这篇文章主要介绍了安装使用Mongoose来让Node.js操作MongoDB的基础教程,前端js+后端node+js操作MongoDB正是所谓最流行的一种JavaScript全栈开发方案,需要的朋友可以参考下...2016-03-03
  • Python运行提示缺少模块问题解决方案

    这篇文章主要介绍了Python运行提示缺少模块问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-10
  • Perl模块编写说明

    这两天在用Perl编写一些监控脚本,其实写代码也是一件挺有意思的事情,就是挺废时间的。而且,由于语法不太熟,基本想到一个东西都要先Google一下看怎么实现。...2020-06-29
  • 利用Node.js获取项目根目录的小技巧

    这篇文章介绍的是一个小技巧来获取node.js项目根目录,这个技巧非常实用。有需要的朋友们可以参考借鉴,下面来一起看看吧。...2016-10-02
  • node.js如何操作MySQL数据库

    这篇文章主要介绍了node.js如何操作MySQL数据库,帮助大家更好的进行web开发,感兴趣的朋友可以了解下...2020-10-29
  • node.js从数据库获取数据

    这篇文章主要为大家详细介绍了node.js从数据库获取数据的具体代码,nodejs可以获取具体某张数据表信息,感兴趣的朋友可以参考一下...2016-05-09
  • node.js [superAgent] 请求使用示例

    post请求:复制代码 代码如下: request.post('/api/pet') .end(function(resp,err){ if (resp.body.status===200) { alert('yay got ' + JSON.stringify(res.body)); } else { return nex...2015-03-15
  • Python PyPDF2模块安装使用解析

    这篇文章主要介绍了Python PyPDF2模块安装使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-04-22
  • 三种Node.js写文件的方式

    这篇文章主要为大家详细介绍了三种Node.js写文件的方式,感兴趣的小伙伴们可以参考一下...2016-03-10
  • 比较node.js和Deno

    这篇文章主要介绍了node.js和Deno的区别,对deno感兴趣的同学,可以参考下...2021-04-27
  • Node.js之http模块的用法

    这篇文章主要介绍了Node.js之http模块的用法,对Node.js感兴趣的同学,可以参考下...2021-04-25
  • node.js 全局变量的具体使用

    这篇文章主要介绍了node.js 全局变量的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-15
  • node.js爬虫爬取拉勾网职位信息

    本篇文章主要介绍了node.js爬虫爬取拉勾网职位信息的方法。具有很好的参考价值。下面跟着小编一起来看下吧 用node.js写了一个简单的小爬虫,用来爬取拉勾网上的招...2017-07-06
  • c#通用登录模块分享

    这是一款简单的ASP.NETC#注册登录模块制作思路,非常简单实用,虽然没怎么考虑登陆的安全性,但作为C#的朋友学习交流使用。...2020-06-25
  • Webpack 实现 Node.js 代码热替换

    这两天为了这个问题, Gitter 上问, Twitter 上问, GitHub 上问, 两天没反应 原来写博客的 jlongster 不理我, 我也不知道 Webpack 作者的联系方式 最后在 Gitter 上发的消息他似乎看到了, 就粗略地解释了一遍, 醍醐灌...2015-10-23