博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node学习6-fs模块
阅读量:6321 次
发布时间:2019-06-22

本文共 1652 字,大约阅读时间需要 5 分钟。

fs里面所有的方法都有同步和异步的形式。

xxxx:异步

xxxxSync:同步

 

异步方法中,最后一个参数都是一个回调函数,回调函数的第一个参数一般是err

 

const fs = require('fs');//删除文件//有任何异常都会直接捕捉到err里面,不会向外抛出,也可以自行抛出fs.unlink('/tmp/hello', (err) => {  if (err) throw err;  console.log('成功删除 /tmp/hello');});

 

 

如果是同步方法,任何异常都会被立刻抛出。可以用try/catch来捕捉

onst fs = require('fs');try { //同步方法,会一直阻塞后面的运行,直到返回  fs.unlinkSync('/tmp/hello');  console.log('successfully deleted /tmp/hello');} catch (err) {  // handle the error}

 

注意,异步的方法不能保证执行顺序,后面的可能会比前面的先完成。 所以下面的例子可能会出错,因为 fs.stat() 操作可能在 fs.rename() 操作之前完成。

//先改名fs.rename('/tmp/hello', '/tmp/world', (err) => {  if (err) throw err;  console.log('重命名完成');});//再看后续的状态fs.stat('/tmp/world', (err, stats) => {  if (err) throw err;  console.log(`文件属性: ${JSON.stringify(stats)}`);});

 

若想按正确的顺序执行操作,则需要把 fs.stat() 放到 fs.rename() 操作的回调函数中。

这样只有rename执行完之后,才会执行到stat()

//改名fs.rename('/tmp/hello', '/tmp/world', (err) => {  if (err) throw err;  //查看状态  fs.stat('/tmp/world', (err, stats) => {    if (err) throw err;    console.log(`文件属性: ${JSON.stringify(stats)}`);  });});

 

如果只是一个用户的情况下,同步异步差异不大。

但是如果多用户,使用同步的方法,一个用户的等待会导致全体用户的等待。

 

 

fs.readFile:异步读文件

const data = fs.readFileSync:同步读文件

fs.writeFile:异步写文件

如果文件没有的话,会自动创建

const fs = require('fs');const content = Buffer.from('Hello World');//目标文件//内容 content//错误处理fs.writeFile('./test',content,err=>{    console.log(err);})

 

文件信息stats

isdir isfile

stat报错就是文件不存在

改名rename

删除unlink

读目录 readdir

新建目录mkdir

删除文件夹rmdir

监控文件watch

 

通过流来读写文件

和直接读好像没有什么区别,至少现在没发现。

fs.createReadStream

fs.createWriteStream

 

回调地狱

//回调地狱()=>{    ()=>{        ()=>{            ()=>{}        }    }}

 

promisify

async function

转载于:https://www.cnblogs.com/weizhibin1996/p/9289648.html

你可能感兴趣的文章
267. Palindrome Permutation II
查看>>
Visual Studio Productivity Power Tools居然也开源
查看>>
百度地图坐标转换
查看>>
多线程之ReentrantReadWriteLock
查看>>
CentOS7 vs centos6
查看>>
apache 多站点配置
查看>>
codeforces水题100道 第十三题 Codeforces Round #166 (Div. 2) A. Beautiful Year (brute force)
查看>>
Linux的watch命令 — 实时监测命令的运行结果
查看>>
ASP.NET Core 中文文档 第三章 原理(10)依赖注入
查看>>
mysql乱码以及Data too long for column全解(最完整实用版)
查看>>
使用Linux调用资源库中的Job报错-ERROR: No repository provided, can't load job.
查看>>
用 Swift 制作一个漂亮的汉堡按钮过渡动画
查看>>
fastclick 源码注解及一些基础知识点
查看>>
为什么要阅读——兼分享《首先,打破一切常规》[中译文]:世界顶级管理者的成功秘诀/(美)马库斯·白金汉,(美)柯特·科夫曼 著...
查看>>
012——VUE中todos示例讲解class中应用表达式
查看>>
Android 沉浸式状态栏 实现方式二 ( 更简单 )
查看>>
更改已经签名的app中的内容
查看>>
性能测试十大误区
查看>>
PHP中使用cURL实现Get和Post请求的方法
查看>>
ASP.NET MVC是如何运行的[2]: URL路由
查看>>