异步的形式总是将完成回调作为其最后一个参数。 传给完成回调的参数取决于具体方法,但第一个参数始终预留用于异常。 如果操作成功完成,则第一个参数将为 null 或 undefined

1.读取文件操作(readFile)

举个例子(读取文件操作)  同步会先执行完 [尽量用异步]

const fs = require('fs')
fs.readFile('./30_readfile.js','utf8',(err,data)=>{
if(err){
throw err
}else{
//输出结果是一个Buffer的(因为没有toString或者在参数那里定义编码格式)
console.log(data);
// console.log(data.toString());
}
}) // 同步操作
const data = fs.readFileSync('./29_event_remove.js','utf8');
console.log(data);

2.写文件(writeFile)

//输出done
const fs = require('fs') fs.writeFile('./text','this is text','utf8',err=>{
if(err) throw err;
console.log('done')
}) //输出done 使用了Buffer
const fs = require('fs')
const content = Buffer.from('this is text')
fs.writeFile('./text',content,err=>{
if(err) throw err;
console.log('done')
})

3.查看文件信息(stats)

const fs =require('fs')
fs.stat('./32_stat.js',(err,stats)=>{
if(err){
throw err
}else{
console.log(stats.isFile());
console.log(stats.isDirectory());
console.log(stats);
}
})

运行结果:

4.重命名(rename)

const fs =require('fs')
fs.rename('./text','text.txt',err=>{
if(err) throw err
console.log('done!');
})

5.unlink

const fs = require('fs')
fs.unlink('./text.txt',err=>{});

6.读文件夹(readdir)

const fs = require('fs')
fs.readdir('./',(err,files)=>{
if(err) throw err
console.log(files);
})

运行结果

7.创建一个文件夹(mkdir)

const fs =require('fs')
fs.mkdir('test',err=>{ })

8.移除一个文件夹(rmdir)

const fs = require('fs')
fs.rmdir('./test',err=>{});

9.监视(watch)[很有用,做本地构建相当方便]

const fs = require('fs')
fs.watch('./',{
recursive:true
},(eventType,filename)=>{
console.log(eventType,filename);
});

10.readstream

//stream有方向的流 (数据) stream有两个条件按,一个是方向一个是数据
const fs = require('fs')
const rs = fs.createReadStream('./39_readstream.js');
//读一点给一点,类似网速慢加载从上到下
rs.pipe(process.stdout);

11.writestream

const fs =require('fs')
const ws = fs.createWriteStream('./text.txt')
const tid = setInterval(()=>{
const num = parseInt(Math.random()*10)
console.log(num); if(num<8){
ws.write(num + '')
}else{
clearInterval(tid)
ws.end()
}
},200)
ws.on('finish',()=>{
console.log('done!');
})

运行结果

12.回调地狱解决

方法一

const fs =require('fs')
const promisify = require('util').promisify; const read = promisify(fs.readFile)
read('./41_promisify.js').then(data=>{
console.log(data.toString()); }).catch(ex=>{
console.log(ex); })

运行结果

方法二

const fs =require('fs')
const promisify = require('util').promisify; const read = promisify(fs.readFile)
// read('./41_promisify.js').then(data=>{
// console.log(data.toString()); // }).catch(ex=>{
// console.log(ex); // }) async function test(){
try{
const content= await read('./41_promisify.js')
console.log(content.toString());
}catch(ex){
console.log(ex);
}
}
test();

运行结果跟上面一样

NodeJS3-4基础API----fs(文件系统)的更多相关文章

  1. NodeJS基础入门-fs文件系统

    文件I/O是由简单封装的标准POSIX函数提供.通过require('fs') 使用该模块.所有的方法都有异步和同步的形式. 异步方法的最后一个参数都是一个回调函数.传给回调函数的参数取决于具体方法, ...

  2. Hadoop基础-HDFS分布式文件系统的存储

    Hadoop基础-HDFS分布式文件系统的存储 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HDFS数据块 1>.磁盘中的数据块 每个磁盘都有默认的数据块大小,这个磁盘 ...

  3. nodeJS之fs文件系统

    前面的话 fs文件系统用于对系统文件及目录进行读写操作,本文将详细介绍js文件系统 概述 文件 I/O 是由简单封装的标准 POSIX 函数提供的. 通过 require('fs') 使用该模块. 所 ...

  4. Windows API教程文件系统

    本篇文章主要介绍了"Windows API教程文件系统",主要涉及到Windows API教程文件系统方面的内容,对于Windows API教程文件系统感兴趣的同学可以参考一下. ...

  5. 6.Ceph 基础篇 - CephFS 文件系统

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485294&idx=1&sn=e9039504 ...

  6. Node.js:fs文件系统模块

    fs文件系统模块,这是一个非常重要的模块,对文件的操作都基于它.该模块的所有方法都有同步和异步两种方式,下面便介绍一下该模块的使用. 1.检测当前进程对文件的权限 使用fs.access(path[, ...

  7. Linux高性能server编程——Linux网络基础API及应用

     Linux网络编程基础API 具体介绍了socket地址意义极其API,在介绍数据读写API部分引入一个有关带外数据发送和接收的程序,最后还介绍了其它一些辅助API. socket地址API 主 ...

  8. 服务器编程入门(4)Linux网络编程基础API

      问题聚焦:     这节介绍的不仅是网络编程的几个API     更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系.     这节主要介绍三个方面的内容:套接字( ...

  9. Linux 高性能服务器编程——Linux网络编程基础API

    问题聚焦:     这节介绍的不仅是网络编程的几个API     更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系.     这节主要介绍三个方面的内容:套接字(so ...

  10. Android BLE与终端通信(一)——Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址

    Android BLE与终端通信(一)--Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址 Hello,工作需要,也必须开始向BLE方向学习了,公司的核心技术就是BLE终端 ...

随机推荐

  1. 三种方法教你HTML实现点击某一个元素之外触发事件

    HTML实现点击某一个元素之外触发事件 大致编写的HTML界面渲染后是这个样子的,我们现在想要实现的需求是点击Button所在的div不会触发事件,而在点击Button所在的div之外的区域时会触发事 ...

  2. Class文件结构全面解析(下)

    接上回书 书接上一回,分享了Class文件的主要构成,同时也详细分析了魔数.次版本号.主版本号.常量池集合.访问标志的构造,接下来我们就继续学习. 欢迎关注微信公众号:万猫学社,每周一分享Java技术 ...

  3. Selenium网页自动登录项目(基于Python从0到1)

    Selenium是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击.下拉等操作. 本文讲述的是通过自动化的方式登陆某一网站,其中包含Selenium+python自动化项目环境如何部 ...

  4. 【集训Day3 单调队列】【2018寒假集训Day 5更新】最大子序列和

    最大子序列和(maxsum) [问题描述] 输入一个长度为n的整数序列(A1,A2,……,An),从中找出一段连续的长度不超过M的子序列,使得这个序列的和最大. 例如: 序列 1, -3, 5, 1, ...

  5. Theano教程

    让我们开始一个交互式会话(例如使用python或ipython)并导入Theano. from theano import * 你需要使用Theano的tensor子包中的几个符号.让我们以一个方便的 ...

  6. oracle 触发器(自增写法)

    触发器trigger 触发器我们也可以认为是存储过程,是一种特殊的存储过程. 存储过程:有输入参数和输出参数,定义之后需要调用 触发器:没有输入参数和输出参数,定义之后无需调用,在适当的时候会自动执行 ...

  7. P1307 数字反转

    题目描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入输出格式 输入格式: 一个 ...

  8. git本地项目连接私人远程仓库以及遇到的问题

    一.引言 1.最开始的时候,我本地项目连接的是github远程仓库,现在要转到公司的私人远程仓库. 2.我和大家说两个事: (1)本地项目连接github远程仓库, (2)本地项目连接私人远程仓库, ...

  9. 堆的python实现及其应用

    堆的概念 优先队列(priority queue)是一种特殊的队列,取出元素的顺序是按照元素的优先权(关键字)大小,而不是进入队列的顺序,堆就是一种优先队列的实现.堆一般是由数组实现的,逻辑上堆可以被 ...

  10. Ansible Playbooks 介绍 和 使用 一

    目录 Ansible Playbooks Playbooks 组成部分: YAML 介绍 YAML 语法 Ansible 基础元素 变量 facts registre 通过命令传递变量 通过roles ...