本文已参与[新人创作礼]活动, 一起开启掘金创作之路。
前言
阅读完本文内容,你将获得如下知识:
- 使用fs模块,读取和写入文件内容
- 使用path模块,安全且合理地 拼接文件路径
话不多说 直入正题let's go
1、fs文件系统模块
简介:fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。 例如:
- fs.readFile() 方法,用来读取指定文件中的内容
- fs.writeFile() 方法,用来向指定的文件中写入内容
接下来 我们三步直接学会这个模块
- 导入fs模块
- 了解fs.readFile(),如何读取文件内容
- 了解fs.writeFile(),如何写入文件内容
1.1导入fs模块
首先 我们做好基本操作,建立起一个node.js的项目
(建文件夹,建.js格式的文件,用VScode打开它)
然后 我们用require()导入我们的fs内置模块
const fs = require("fs")
至此,fs模块便导入到了我们的项目中去
1.2了解fs.readFile(),如何读取文件内容
在代码中写上fs.readFile() 鼠标移动到目标方法上,VScode便会自动提示参数:
可能有点难以理解,我直接简单易懂的跟大家描述一下:
fs.readFile(必填参数1:字符串-表示文件路径,
可选参数2:字符串-表示文件编码格式-默认utf8,
必填参数3:回调方法-完成文件读取操作后通过回调函数处理读取结果)
理论掌握,实践操作一下:
首先我们在工作区再创建一个 ‘快来读我.txt文件’
并且随意写点内容进去
太棒了,您写的代码太棒太优雅了,成功读取到了内容
然后书写代码获取 ‘快来读我.txt’ 目标文件的内容
const fs = require('fs')
fs.readFile("./快来读我.txt",function(err,data){
console.log(err)
console.log(data.toString())
})
最后在命令行终端node一下我们的js文件
node ./fs_study.js
你看 是不是很简单就可以读取文件内容了。
1.3了解fs.writeFile(),如何写入文件内容
同理,我们一样在代码中写上fs.writeFile() 移动鼠标进行查看
白话简单讲解一下讲解:
fs.writeFile(必填参数1:字符串-指定文件路径,
必填参数2:字符串-表示要写入的内容,
可选参数3:字符串-以什么格式写入文件内容-默认utf8,
必填参数4:回调方法-文件写入完成后的回调函数)
理论掌握,实践操作一下:
首先一样,在工作区任意建个文件 例如 ‘快写点东西进来.txt’
然后在项目中开始书写代码
const fs = require('fs')
var dataStr = `2022年8月7日 天气晴 又在桥洞里被管家发现了\n
管家说:"少爷别赌气了,老爷已经原谅你了"\n
但是我啥也不听,扭头就跑,因为我爱上了自由不羁的生活\n`
fs.writeFile('./快写点东西进来.txt', dataStr, function(err){
if (err) {
console.log(err)
}
console.log("文件写入成功,以下是写入的内容:")
//这里直接复制了我之前读取文件的代码
fs.readFile("./快写点东西进来.txt",function(err,data){
console.log(err)
console.log(data.toString())
})
})
运行结果:
怎么样,写入操作是不是也很简单呢。
2、path 路径模块
使用相对路径,可以是可以,但是偶尔会出现一些莫名其妙的bug 而使用绝对路径,又不够优雅,并且只能在当前电脑使用,后期项目部署到服务器时又不方便。所以,我们再学一个path模块来优雅地处理文件路径
path 模块是 Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理 需求。
- path.join() 方法,用来将多个路径片段拼接成一个完整的路径字符串 。
- path.basename() 方法,用来从路径字符串中,将文件名解析出来。
- path.extname() 方法 使用extname方法获取路径中的文件的扩展名
- __dirname指的是当前文件所在文件夹的绝对路径。
// 使用演示
// 使用演示
const path = require('path') // 基操导入模块
// __dirname
console.log("****************打印当前文件所在文件夹的绝对路径*********")
console.log(__dirname)
// join方法
console.log("****************使用join拼接路径演示********************")
const pathStr01 = path.join('/一级目录', '/二级目录/三级目录', '../', '/四级目录')
console.log(pathStr01)
const pathStr02 = path.join(__dirname, './demo/test.txt')
console.log(pathStr02)
console.log("*****************使用basename方法获取路径中的文件名********")
const fileName = path.basename(pathStr02)
console.log(fileName)
console.log("*****************使用extname方法获取路径中的文件的扩展名********")
const fileExt= path.extname(pathStr02)
console.log(fileExt)
我们再回过头来修改之前fs模块演示的代码,让他变得更加优雅
const fs = require('fs')
const path = require('path')
var dataStr = `2022年8月7日 天气晴 又在桥洞里被管家发现了\n
管家说:"少爷别赌气了,老爷已经原谅你了"\n
但是我啥也不听,扭头就跑,因为我爱上了自由不羁的生活\n`
const filePath = path.join(__dirname,"././快写点东西进来.txt")
fs.writeFile(filePath, dataStr, function(err){
if (err) {
console.log(err)
}
console.log("文件写入成功,以下是写入的内容:")
//这里直接复制了我之前读取文件的代码
fs.readFile(filePath,function(err,data){
if (err) {
console.log(err)
}
console.log(data.toString())
})
})
运行结果:
这个代码,不管你拿到台电脑,只要有node 随便跑,自由飞翔。