NodeJS3-4基础API----fs(文件系统)
异步的形式总是将完成回调作为其最后一个参数。 传给完成回调的参数取决于具体方法,但第一个参数始终预留用于异常。 如果操作成功完成,则第一个参数将为 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(文件系统)的更多相关文章
- NodeJS基础入门-fs文件系统
文件I/O是由简单封装的标准POSIX函数提供.通过require('fs') 使用该模块.所有的方法都有异步和同步的形式. 异步方法的最后一个参数都是一个回调函数.传给回调函数的参数取决于具体方法, ...
- Hadoop基础-HDFS分布式文件系统的存储
Hadoop基础-HDFS分布式文件系统的存储 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.HDFS数据块 1>.磁盘中的数据块 每个磁盘都有默认的数据块大小,这个磁盘 ...
- nodeJS之fs文件系统
前面的话 fs文件系统用于对系统文件及目录进行读写操作,本文将详细介绍js文件系统 概述 文件 I/O 是由简单封装的标准 POSIX 函数提供的. 通过 require('fs') 使用该模块. 所 ...
- Windows API教程文件系统
本篇文章主要介绍了"Windows API教程文件系统",主要涉及到Windows API教程文件系统方面的内容,对于Windows API教程文件系统感兴趣的同学可以参考一下. ...
- 6.Ceph 基础篇 - CephFS 文件系统
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485294&idx=1&sn=e9039504 ...
- Node.js:fs文件系统模块
fs文件系统模块,这是一个非常重要的模块,对文件的操作都基于它.该模块的所有方法都有同步和异步两种方式,下面便介绍一下该模块的使用. 1.检测当前进程对文件的权限 使用fs.access(path[, ...
- Linux高性能server编程——Linux网络基础API及应用
Linux网络编程基础API 具体介绍了socket地址意义极其API,在介绍数据读写API部分引入一个有关带外数据发送和接收的程序,最后还介绍了其它一些辅助API. socket地址API 主 ...
- 服务器编程入门(4)Linux网络编程基础API
问题聚焦: 这节介绍的不仅是网络编程的几个API 更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系. 这节主要介绍三个方面的内容:套接字( ...
- Linux 高性能服务器编程——Linux网络编程基础API
问题聚焦: 这节介绍的不仅是网络编程的几个API 更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系. 这节主要介绍三个方面的内容:套接字(so ...
- Android BLE与终端通信(一)——Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址
Android BLE与终端通信(一)--Android Bluetooth基础API以及简单使用获取本地蓝牙名称地址 Hello,工作需要,也必须开始向BLE方向学习了,公司的核心技术就是BLE终端 ...
随机推荐
- dbstructsync 多套mysql环境表、字段、索引的差异sql产出(原创)
最近写了一个工具(比较两套测试环境数据库表.表字段.索引的差异) 功能:可以比较两套环境中mysql指定库中表.表字段及索引的差异,返回具体需要同步的执行sql A环境的数据库db 作为sourced ...
- 百度杯 black_hole复现
在这次复现中,经历了太多挫折. 刚刚开始的时候本地调试 get不到shell,就很疑问,而且不会爆破,想学下怎么爆破出那个0x05, 后来问了位师傅 ,他说用retdl_solve 试试,我就跑去学了 ...
- Xamarin.Forms 学习系列之优秀UI收集
1.各种优秀UI例子 https://github.com/jsuarezruiz/xamarin-forms-goodlooking-UI 输入框例子 https://github.com/enis ...
- WebGPU学习(一): 开篇
介绍 大家好,本系列从0开始学习WebGPU API,并给出相关的demo. WebGPU介绍 WebGPU相当于DX12/Vulkan,能让程序员更灵活地操作GPU,从而大幅提升性能. 为什么要学习 ...
- plot()与dev 函数族的使用
1. plot()的类型选择 plot()函数,属于graphics包中. plot(a,b,type="value") type:以什么样的形式来画a,b之间的关系: ·&quo ...
- c# 窗体开发1 基本控件的使用
namespace firstly #当前命名空间控件 { public partial class Form1 : Form { public Form1() #第一个窗体 { Initiali ...
- JSON.parse() 报错和一些解决方法
js 报错 Unexpected end of JSON input,Unexpected token u in JSON at position 0 JSON 通常用于与服务端交换数据. 在接收服务 ...
- Java继承、构造、重写
Music mu=new Music(); Musc m=mu;//地址一样 继承:Java只支持单继承,不支持多继承. Java支持多层(重)继承(继承体系). 如果类之间存在着:is a 的关 ...
- 复选框、单选框样式自定义(https://www.cnblogs.com/freedom-feng/p/11346396.html)
复选框.单选框样式自定义(https://www.cnblogs.com/freedom-feng/p/11346396.html)复选框html内容如下:<input type="c ...
- 大型情感剧集Selenium:6_selenium中的免密登陆与cookie操作
网站登录 现在各大平台在反爬虫功能上,可谓花样繁多.总结下来按照破解成功率排名,最高的是滑动解锁.其次是验证码数字.之后是一次点击对应的汉字,最后是想12306之前那种反人类的让你说那些是奶糖吧,哈哈 ...