返回txt格式的文本使用编码 js_Node.js学习笔记第一天
01-导入node模块使用流程
// node.js中将不同功能的代码放在不同的js文件中,也叫模块化,核心模块会随着安装node.js时一并安装// 1. 导包 (本质就是得到一个全局对象,存储很多方法或属性)const fs = require('fs');// 2.使用模块fs.readFile(...)
02- fs模块基本使用
2.1 readFile
读取文件数据
// 1.导入模块const fs = require('fs');
// 2.读取文件// fs.readFile('文件路径', options, 回调函数(err, data) => {})
fs.readFile('./123.txt', 'utf-8', (err, data) => { // 没有错误信息 err 为 null // 如果有错误信息 if成立 执行 throw 程序终止并抛出异常 if (err) throw err; // 代码能执行到这里说明没有错误信息 // 就可以使用data参数来拿到从文件中读取到的数据 console.log(data)})
- 文件读取默认是二进制类型,可以指定编码
2.2 writeFile
将数据写入文件
// 1.导入模块const fs = require('fs');// 2.写入文件// fs.writeFile(path, data, encode, callback())fs.writeFile('./222.txt', 'hello world', (err) => { if (err) throw err; console.log('写入成功');})
- 文件写入默认是
w
模式,要写入的文件不存在会自动新建,存在会覆盖, - 写入数据到已存在文件时,如果不想覆盖文件原有内容,可以指定{flag: 'a'} 追加模式
03-fs中文件读取写的同步和异步区别
/* 1. 同步与异步区别 1.1 API不同 : 异步有回调,同步没有 1.2 顺序不同: 同步有序优先执行,异步无序执行 1.3 性能不同: 异步不阻塞线程性能高,同步阻塞线程性能低2. 了解编译器工作流程 1.编译器从上往下依次解析代码 2.判断代码是同步还是异步 2.1 同步:立即执行 2.2 异步:不执行。放入事件队列池(Event Loop) 3.页面所有代码执行完毕后才会执行异步*/
// 异步执行fs.readFile('1.txt', 'utf8', (err, data) => { if (err) throw err; cnsole.log('异步执行')})// 异步执行fs.writeFile(filePath, 'abc123', {flag: 'a'}, (err) => { if (err) throw err; console.log('写入成功');})
// 同步执行fs.writeFileSync(filePath, '同步写入', {flag: 'a'})// 同步执行const data1 = fs.readFileSync('1.txt', 'utf8');
04-path文件路径模块
- 前端和node中相对路径的区别
- 前端相对路径 : 是 基于
./
所在文件的 文件夹路径 - nodejs中相对路径: 是基于执行node命令时 终端所在的路径
- 前端相对路径 : 是 基于
- 如果nodejs中使用了相对路径,就必须要在执行node命令前进入要执行文件的所在路径,不然就会报错
- 所以最好不要在node中使用相对路径,应该使用绝对路径
- nodejs 中每一个文件都有两个默认的全局变量
__dirname
: 当前js所在的文件夹绝对路径__filename
: 当前js文件自身的绝对路径
- path模块:
path.join(...paths: string[])
拼接路径- 用join方法拼接路径时 可以不用关心连接处的 路径分隔符问题
- 自动识别当前操作系统的路径分隔符,进行拼接
- 自动识别路径分隔符的一些错误格式,自动改成正确格式
05-http服务器模块
5.1 http模块搭建服务器
// 1.导入模块const http = require('http');
// 2.创建服务器// 参数: request 代表的是本次客户端发送过来的请求报文,服务器将二进制的请求报文转换成了对象的形式来表示// 参数: response 代表本次服务器要响应(返回)给客户端的响应报文, 服务器会在返回前将对象转换成二进制的响应报文const server = http.createServer((request, response) => { // 服务器每收到一个请求,就会执行一次这个回调函数 // 1. 接收(获取)请求数据 request // 2. 处理本次请求的业务逻辑(服务端主要业务操作数据进行增删改查) // 3. 返回响应 response
// 解决请求url路径中文转码 decodeURI(request.url);
// 设置响应头解决浏览器显示中文乱码 res.writeHead(200, { // 'Content-Type': 'text/plane;charset=utf-8' 'Content-Type': 'applictaion/json;charset=utf-8' })
// 响应数据 只能响应字符串或二进制 // 如果要响应json必须转字符串再响应 const jsonStr = JSON.stringify(jsonObj) response.end(jsonStr)})
// 3. 开启服务器 (准备就绪)server.listen(8000, localhost,() => { console.log('服务器启动成功, 监听8000端口')})
06-响应html给客户端
- 将html文件利用fs和path模块读取出来再响应
// 1.导入模块const http = require('http');const fs = require('fs');const path = require('path');
// 2.创建服务器const server = http.createServer((request, response) => { fs.readFile(path.join(__dirname, 'index.html'), (err, data) => { if (err) throw err; response.end(data); // 这里读取文件时没有指定utf8编码读取出来是二进制数据,少去多余转换,性能更高 })})
// 3. 开启服务器server.listen(8000, () => { console.log('服务器启动成功,监听8000端口');})
~END~
点赞、分享、关注我
我们一起学习!
返回txt格式的文本使用编码 js_Node.js学习笔记第一天相关推荐
- 利用计算机技术实现对文本篇章,自然语言处理NLP学习笔记一:概念与模型初探...
前言 先来看一些demo,来一些直观的了解. 自然语言处理: 可以做中文分词,词性分析,文本摘要等,为后面的知识图谱做准备. 知识图谱: 还有2个实际应用的例子,加深对NLP的理解 九歌机器人: 微软 ...
- ADPCM编码与解码学习笔记·
ADPCM编码与解码学习笔记 一.前言 之前许多次说过,有空的时候写写博客,可是一直没有好好落实.由于工作的原因,经常会接触到一些音视频的编解码技术,而ADPCM就是我第一接触的音频编码技术.所以,本 ...
- C语言文件操作(五)将txt格式16进制编码转化为txt格式汉字
准备 将想要转换为16进制的文字保存为after.txt,与该程序放在同一目录下 举例 存好after.txt,运行程序后,将在同一目录下生成文件words.txt C代码 //文件操作2.cpp # ...
- C语言文件操作(四)将txt格式汉字转化为txt格式16进制编码
准备 将想要转换为16进制的文字保存为before.txt,与该程序放在同一目录下 举例 存好before.txt,运行程序后,将在同一目录下生成文件after.txt C代码 //文件操作1.cpp ...
- linux getline函数用法,Linux文本处理三剑客之awk学习笔记05:getline用法详解
getline用法详解 在默认情况下,awk支持从文件或者STDIN中读取数据.我们也可以使用getline来灵活读取数据,例如在main代码块执行过程中读取某个非待处理文件的数据,或者从某个读取某个 ...
- postfilter中文什么意思_Filterpost请求中文字符编码的过滤器 --学习笔记
java代码:import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;i ...
- 指数哥伦布编码 java_H.264学习笔记6——指数哥伦布编码
一.哥伦布码 哥伦布码就是将编码对象分能成等间隔的若干区间(Group),每个Group有一个索引值:Group Id. >对于Group Id采用二元码编码: >对于Group内的编码对 ...
- Auto.js学习笔记13:images.findImag()报错找不到方法,返回的坐标无法点击等问题利用图片的相似度执行精准目标点击(实战篇)
申明本人使用的autojs是4.1.1版本 目录 操作app是云闪付的小程序抢消费劵 实际开发中各种问题并解答 错误代码 报错:Can't find method findImage()函数 问题: ...
- 文本样式设置/盒子模型学习笔记
一.记单词.复习前一天的学习内容.讲解练习作业. 二.转义字符 http://tool.oschina.net/commons?type=2 (转义字符的链接) 三.文本样式设置 1.text-ind ...
最新文章
- IDP申请直到软件上架流程 - iOS
- 框架警察 fxcop 的规则莫名其妙
- Python 学习笔记之字典(进阶篇)
- Spring Framework Part2 IOC
- python心得体会-终于懂得python基础学习心得
- 将图的广度优先遍历在邻接矩阵和邻接表存储结构上分别实现_图解:什么是“图”?
- 大数据时代了解一些问题
- eclipse如何用php,phpeclipse使用详解
- 随机游走与马尔科夫链的一些基础
- 实用的Chrome插件推荐
- jquery的插件有哪些
- kali虚拟机VMBox安装
- 写给即将毕业的同学们
- 开学季适合学生党的蓝牙耳机,音质好的蓝牙耳机排行
- Android刘海屏、水滴屏全面屏适配详解,androidui基础教程
- java8的stream流编程的sorted排序方法
- 数据中台推不动?手把手教你落地搭建!
- 灰色关联分析的简单介绍以及使用
- 奔向三张,不破不立:一个iOS开发工程师的职业规划思考(转自iOSer 逆,以资激励)
- php 获取百度权重,获取网站 百度权重 搜狗 谷歌PR
热门文章
- pybind播放视频
- 分割开源资料整理segmentation
- OpenGL.error.NullFunctionError: Attempt to call an undefined function”解决方案
- java单例模式-有用的模式
- 目标跟踪学习算法DSST
- 后台管理系统怎么实现操作日志原理_springboot角色权限后台管理系统脚手架实战开发教程包含完整源码...
- parquet to mysql_在hive中使用parquet (CDH4.3)
- net.sf.json将string转为map
- 秒杀系统架构优化思路
- matlab mnl,LaTex中插入VISO 和 MATLAB 经验总结