Nodejs学习之fs模块
初始node.js
浏览的中的JavaScript主要是有JavaScript核心语法和webAPI组成。浏览器中因为使用了JavaScript解析引擎,所以JavaScript代码才可以再浏览器中被执行。
不同浏览器中使用的js解析引擎:
chromw解析引擎V8、Firefox解析引擎 OdinMonkey、safiri解析引擎 JSCore。其中V8解析引擎性能最佳。
浏览器中常见的API
API是运行环境(浏览器)提供的特·殊接口
如:DOM API / BOM API / ajaxAPI……
浏览器中JavaScript运行环境
运行环境是指代码正常运行所必须的环境。
一个浏览器当中,包含了JavaScript解析引擎,包含了常用的API,该浏览器便是一个运行环境。
node.js运行环境
node.js是一个基于Chrome V8引擎的JavaScript运行环境
通过学习node.js便可以使用JavaScript实现后端开发
node.js中的JavaScript运行环境
node.js运行环境和浏览器一样,也由JavaScript解析引擎和内置API组成
**node.js的解析引擎:**Chrome V8
内置API: fs/path/http/js内置对象……
总结:浏览器是JavaScript的前端运行环境、node.js是JavaScript的后端运行环境,node.js中无法调用前端运行环境中的BOM/DOM等浏览器的内置API
node.js可以做什么
node.js作为JavaScript的运行环境,只提供了基本的功能和API,但通过不同的框架丰富了node.js的使用场景
1、基于Express构建web应用 2、基于electron构建跨平台桌面应用 3、基于restify构建API接口项目……等
node.js学习路线
1、Node.js内置API模块(fs/path/http等)2、第三方API模块(express/mySQL等)
node.js环境的安装并查看当前版本号
csdn笔记:
https://blog.csdn.net/No1banana/article/details/124590181?spm=1001.2014.3001.5501
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z0xwwcIu-1654061140976)(/Users/trillion-star/Library/Application Support/typora-user-images/截屏2022-05-31 12.59.56.png)]
node官网有两个node的下载版本,有LTS稳定版和current最新版这里推荐使用LTS版本。
如图当前node.js版本为 v18.1.0
如何在终端中执行JavaScript代码
一、打开终端(windows系统中是cmd或者PowerShell中执行)
二、输入node
+空格
+要执行文件的路径
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZVpKgG44-1654061140977)(/Users/trillion-star/Library/Application Support/typora-user-images/截屏2022-05-31 14.08.22.png)]
通过执行成功:输出了Hello,world.node.js
fs文件序偶通模块
fs是node.js自带的由官方提供的用来操作文件的模块,用来满足对文件的操作需求
使用: const fs = require('fs')
来倒数fs模块
一、fs.readFile()方法:读取指定文件中的内容
二、fs.writeFile()方法:向指定的文件中写入内容
fs.readFile()方法的使用
fs.readFile(path[,options],callback)
参数1、必选参数path,字符串,表示文件的路径。
参数2、[可选参数 ],表示指定读取文件的编码格式。
参数3、必选参数callback,文件读取温完成后通过回到函数拿到读取的结果。
示例:
// 导入fs模块并用变量fs接收
const fs = require('fs')
// 调用fs模块中的readFile方法读取文件
// 参数1:读取文件的存放路径
// 参数2:读取文件采用的编码格式,默认utf-8
// 参数3:回到函数,获取读取成功或失败的结果
fs.readFile('./files/一个文本文档.txt','utf-8',function(err,result){
console.log(err)// 输出失败结果
console.log(result)// 输出成功结果
})
在终端中通过node执行上面的js代码,会输出读取结果。
如何判断文件是否读取成功?
通过判断err的值便可以判断是否成功读取到文档,如果err的值为null则读取成功,否则读取失败
fs.readFile('./files/一个文本文档.txt','utf-8',function(err,result){
if(err){
return console.log('文件读取失败'+err.message)
}
console.log('文件读取成功,内容是:'+result)
})
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rEpCbJxX-1654061140977)(/Users/trillion-star/Library/Application Support/typora-user-images/截屏2022-05-31 14.47.43.png)]
fs.writeFile()方法的使用
使用fs.writeFile方法可以想指定文件中写入内容,语法格式如下:
fs.writeFile(file,data[,options], callback)
参数1、必选参数file,需要指定一个文件路径的字符串。
参数2、必选参数data,表示要写入的内容。
参数3、[ 可选参数] ,表示写入文件内容的格式,默认utf-8。
参数4、必选参数callback,表示文件写入完成后的回调函数,无论成功或者失败都会调用。
示例:
// 导入fs模块使用变量fs接收
const fs = require('fs')
// 参数1:文件存放路径,参数2:要写入的内容,参数3:回调函数
fs.writeFile('./files/准备写入的文档.txt','你好,Node',function(err){
// 如果文件写入成功,err值为null
if(err){
return console.log('文件写入失败'+ err.message)
// 文件写入失败得到一个错误对象,输出错误对象的message
}
console.log('文件写入成功')
})
练习 成绩文档的整理
实现步骤:
1、导入fs文件系统模块
2、读取成绩.txt文件
3、判断文件是否读取失败
4、读取成功后处理成绩数据
5、将处理完成的成绩数据调用writeFile方法写入到新文件
const fs = require('fs')
fs.readFile('./files/成绩.txt','utf-8',function(err,result){
if(err){
return console.log('读取失败',err.message)
}
// 成绩读取成功将成绩数据按照空格进行分割
const arrOld = result.split(' ')
// 循环分割后得到数组,循环数组将每一项数据的字符串进行替换
const arrNew = []
arrOld.forEach(item=>{
arrNew.push(item.replace ('=', ' : '))
})
// 将新数组中的每一项进行合并,回车换行,得到新的字符串
const newStr = arrNew.join('\r\n')
// 写入到新的文档
fs.writeFile('./files/成绩ok.txt',newStr,function(err){
if(err){
return console.log('写入失败',+err.message)
}
console.log('写入成功:')
})
})
效果截图
fs模块路径动态拼接的问题
在使用fs模块操作文件时,如果路径是./或者…/开头的相对路径容易出现路径动态拼接错误的问题。
- 解决方法一、将相对路径更改为绝对路径。(移植性差)
绝对路径从根目录出发:/Users/trillion-star/Desktop/node学习/files/成绩.txt
-
解决方法二、_ _dirname
代表当前文件所处的目录。(推荐)
fs.readFile(__dirname +'/files/成绩.txt','utf-8',function(err,dataStr){
if(err){
return console.log('读取文件失败'+err.message)
}
console.log('读取文件成功'+dataStr)
})