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 模块中所有的操作都提供了异步的和 同步的两个 ...
随机推荐
- C++基础面试题及答案
C++ C++ 和C的主要区别 C语言是面向过程编程,C++是面向对象编程,C++ 完全兼容C C++有哪些特性,简述对他们的理解 封装.继承.多态 封装 将的事物抽象成一个个集合(也就是所说的类), ...
- js 事件对象相关笔记
事件对象 event就是一个事件对象 写到我们的监听函数的括号里面 当形参来看 事件对象只有有了事件才存在,他是系统给我们自动创建的 不需要我们传递参数 事件对象是我们事件的一 ...
- [转]解决The requested resource is not available的方法
此博文为转载博文,首先感谢原作者 HTTP Status 404(The requested resource is not available)异常主要是路径错误或拼写错误造成的,请按以下步骤逐一排 ...
- ASP.NET Core - 实现Http自定义请求头策略
前言 在正常的情况下,当我们系统用到JWT认证方式时,需要在Http请求头添加Authorization: XXX,这样在后台服务的控制器中打上[Authorize]授权标签,就限定所有的请求必须通过 ...
- Q#–一个新年愿望清单
本文章为机器翻译.https://blogs.msdn.microsoft.com/visualstudio/2018/12/24/qsharp-wish-list-for-new-year/# 在以 ...
- C#开发笔记之03-为什么选择IsNotXXX方法而不是IsXXX方法?
C#开发笔记概述 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/959 访问. 为什么有时候要选择IsNotXXX方法而 ...
- C#算法设计查找篇之05-二叉树查找
二叉树查找(Binary Tree Search) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/706 访问. 二叉排 ...
- Vuex mapMutation的基本使用
mapMutation-store中的同步方法 import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default n ...
- Android 内部存储读写介绍
内部存储读写 内容介绍 Android系统允许应用程序创建仅能够自身访问的私有文件,文件保存在设备的内部存储器上,在Linux系统下的/data/data//files目录中 Android系统不仅支 ...
- Spring Boot整合ElasticSearch和Mysql 附案例源码
导读 前二天,写了一篇ElasticSearch7.8.1从入门到精通的(点我直达),但是还没有整合到SpringBoot中,下面演示将ElasticSearch和mysql整合到Spring Boo ...