01 fs模块
1 fs.readFile
异步执行函数
/**
fs 读取文件相对路径是相对终端命令行所在的路径
process.cwd()返回终端命令行的绝对路径
*
*/ fs = require('fs')
fs.readFile('./static/1.txt', (err, data) => {
if (err) {
console.log(err.message);
return
}
console.log(data); //二进制
console.log(data.toString()); //二进制转字符串
})
// 如果指定了编码格式,data就直接是字符串 ./可以省略'static/test/test.js'=='./static/test/test.js'
fs.readFile('static/test/test.js', 'utf8', (err, data) => {
if (err) return
console.log(data);
})
// 要求:在第一个异步任务读取成功之后再读取第二个异步任务, 第二成功后,在读取第三个异步任务
const fs = require('fs');
fs.readFile('./static/1.txt', (err, data) => {
if (err) throw err
console.log(data.toString());
fs.readFile('./static/2.txt', (err, data) => {
if (err) throw err
console.log(data.toString());
fs.readFile('./static/3.txt', (err, data) => {
if (err) throw err
console.log(data.toString());
})
})
})
promise 管理下
new Promise((resolve, reject) => {
fs.readFile('./static/1.txt', (err, data) => {
if (err) reject(err)
else resolve(data)
})
}).then(data => {
console.log(data.toString());
return new Promise((resolve, reject) => {
fs.readFile('./static/2.txt', (err, data) => {
err ? reject(err) : resolve(data)
})
})
}).then(data => {
console.log(data.toString());
return new Promise((resolve, reject) => {
fs.readFile('./static/3.txt', (err, data) => {
err ? reject(err) : resolve(data)
})
})
}).then(data => console.log(data.toString())).catch(err => console.log(err.message))
封装读取promise的fs.readFile
function getFileByPath(path) {
return new Promise((resolve, reject) => {
fs.readFile(path, (err, data) => {
err ? reject(err) : resolve(data)
})
})
}
getFileByPath('./static/1.txt').then(data => {
console.log(data.toString());
return getFileByPath('./static/2.txt')
}).then(data => {
console.log(data.toString());
return getFileByPath('./static/3.txt')
}).then(data => console.log(data.toString())).catch(err => console.log(err))
//Promise.all([promise1,promise2,...])返回一个新的promise对象,只有都成功才执行then 返回数据也是一个数组 ,只要其中有一个失败,就直接走了catch
//适合页面发起多个ajax请求
const promise1 = getFileByPath('./static/1.txt')
const promise2 = getFileByPath('./static/2.txt')
const promise3 = getFileByPath('./static/3.txt') Promise.all([promise1, promise2, promise3]).then(data => console.log(data)).catch(err => console.log(err.message))
async function fn() {
const data1 = await promise1
const data2 = await promise2
const data3 = await promise3
return [data1.toString(), data2.toString(), data3.toString()]
}
fn().then(data => console.log(data)).catch(err => err)
01 fs模块的更多相关文章
- nodejs模块——fs模块
fs模块用于对系统文件及目录进行读写操作. 一.同步和异步 使用require('fs')载入fs模块,模块中所有方法都有同步和异步两种形式. 异步方法中回调函数的第一个参数总是留给异常参数(exce ...
- node.js系列笔记之fs模块《二》
一:感触 最近工作比较忙,感觉也比较多,因为工作上的不顺利,再加上加班比较多,所以最近心情不是很好,再加上英语能力差到不行,所以最近半个月学习进度也比较慢, 但还是告诉自己每天都坚持学一点,即使今天心 ...
- fs模块(二)
1. renameSync 01. 重命名 02. 移动文件夹,相当于剪切作用 var fs = require('fs'); // 01 文件重命名 var renameFile = (oldFil ...
- node.js之fs模块
一.fs模块的mkdir函数,创建文件夹 var http = require("http"); var fs = require("fs"); var ser ...
- [Nodejs] node的fs模块
fs 模块 Node.js 提供一组类似 UNIX(POSIX)标准的文件操作 API. Node 导入文件系统模块(fs).Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如 ...
- NodeJs Fs模块
和前面的Http.Url模块一样,Fs模块也是node的核心模块之一,主要用于对系统文件及目录进行读写操作. 基本方法 fs.stat fs.stat可以用来判断是文件还是目录:stats.isFil ...
- [js]nodejs初探http/url/fs模块
难怪我没学会, 因为我的套路有问题. 错误点, 1,大而全 2,不注重思路 学习要领: 1, 小而精 2, 重思路(总结) nodejs特点: 1.node提供了js的运行环境, 一般将node运行在 ...
- node(03)--利用 HTTP 模块 URl 模块 PATH 模块 FS 模块创建一个 WEB 服务器
Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等 Web 客户端提供文档,也可以放置网站文件,让全世界浏览:可以放置数据文件,让全世界下载.目前最主流的三个 We ...
- Node.js 文件系统fs模块
Node.js 文件系统封装在 fs 模块是中,它提供了文件的读取.写入.更名.删除.遍历目录.链接等POSIX 文件系统操作. 与其他模块不同的是,fs 模块中所有的操作都提供了异步的和 同步的两个 ...
随机推荐
- 职场老鸟,一文教你如何正确入门Python爬虫!
爬虫现在的火热程度我就不说了,先说一下这门技术能干什么事儿,主要为以下三方面: 1.爬取数据,进行市场调研和商业分析 爬取知乎.豆瓣等网站的优质话题内容:抓取房产网站买卖信息,分析房价变化趋势.做不同 ...
- “随手记”APP与已经发布的记账软件“鲨鱼记账”的差距
我们使用并观察了“鲨鱼记账”APP,发现,我们的软件真的还有很多不足的地方.就功能这方面来说:“鲨鱼记账”APP有更多的收入.支出分类:就界面来说:“鲨鱼记账”APP有比我们优美太多的页面和背景.但是 ...
- 论文结果图:matplotlib和seaborn实现
在论文中,可视化结果往往很重要,毕竟文字太抽象,需要图片向审稿人直观的展现出我们的结果.我也写了俩篇论文和一篇专利的申请,其中也有一些画图的程序,因此记录,防止以后忘了.由于篇幅原因,文章就不贴代码, ...
- 关于vector的erase删除操作的两种不同方法,在linux与visual studio的实现讨论
关于vector的erase删除操作的两种不同方法,在linux与visual studio的实现讨论 1.前言: 最近在做某一个题时,用到了vector的删除操作,利用的是erase()函数删除符合 ...
- 他们都说JVM能实际使用的内存比-Xmx指定的少?这是为什么呢
这确实是个挺奇怪的问题,特别是当最常出现的几种解释理由都被排除后,看来JVM并没有耍一些明显的小花招: -Xmx和-Xms是相等的,因此检测结果并不会因为堆内存增加而在运行时有所变化. 通过关闭自适应 ...
- JS的数据属性和访问器属性
ECMA-262第5版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMA-262定义这些特性是为了实现javascript引擎用的,因此在javasc ...
- centos go 安装 使用
#goland 确保能ping通百度[root@z my_project]# vi /etc/resolv.conf# Generated by NetworkManagersearch locald ...
- 深度优先搜索(dfs)与出题感想
在3月23号的广度优先搜索(bfs)博客里,我有提到写一篇深搜博客,今天来把这个坑填上. 第一部分:深度优先搜索(dfs) 以上来自百度百科. 简单来说,深度优先搜索算法就是——穷举法,即枚举所有情况 ...
- 41.4 Method Security方法安全性
41.4.1 <global-method-security> 这个元素是为Spring Security beans上的安全方法添加支持的主要手段.可以通过使用注释(在接口或类级别定义) ...
- 拼接html不显示layui进度条解决方法
最新有个新需求,要异步拼接html并渲染数据,并且我这边是用layui的flow.load(流加载)渲染多个进度条.按官网给出的 element.progress('demo', n+'%'); 就是 ...