异步的形式总是将完成回调作为其最后一个参数。 传给完成回调的参数取决于具体方法,但第一个参数始终预留用于异常。 如果操作成功完成,则第一个参数将为 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();

运行结果跟上面一样

最新文章

  1. C# : CEF操作
  2. Eclipse中设置jsp文字大小
  3. Asp.net EasyUI中的combogrid实现分页功能
  4. ThinkPHP魔术方法
  5. 对于指定区块div,如何区分区块内的点击 和 区块外的点击?
  6. XPS 15 9530使用Windows10频繁发生Intel HD Graphics 4600驱动奔溃的一种解决方法
  7. 【vijos1066】弱弱的战壕 线段树
  8. Python学习教程(learning Python)--2 Python简单函数设计
  9. HDU 蟠桃记
  10. C# - InnerList
  11. WSDL文件
  12. MySQL&#160;性能优化--优化数据库结构之优化数据大小
  13. 虚拟机搭建和安装Hadoop及启动
  14. c#.net基础
  15. struts配置result类型为json后导致页面不能访问的错误
  16. [翻译]C# BAD PRACTICES: Learn how to make a good code by bad example---C#:如何将坏的代码重新编译为好的代码
  17. (算法)AA制
  18. 解题:APIO 2014 序列分割
  19. 数据结构(c语言版)文摘
  20. 浅谈NFC、RFID、红外、蓝牙的区别

热门文章

  1. Python3 之 类属性与实例属性
  2. Linux -- 进程管理之 fork() 函数
  3. 什么鬼,面试官竟然让我用Redis实现一个消息队列!!?
  4. 02 JavaScript数据类型、类型转换、注释
  5. MySQL 格式化时间 成字符串
  6. 【JavaEE】之SSM入门项目的搭建
  7. Prometheus PromQL 简单用法
  8. selenium无界面执行和反爬
  9. C语言l-2019秋作业01
  10. Qt的安装