Node.js——文件模块和路径模块(读写文件,处理路径)

简介: Node.js——文件模块和路径模块(读写文件,处理路径)

一、fs 文件系统模块

fs 模块 是 Node.js 官方提供的、用来 操作文件 的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作要求。


1、读取指定文件

fs.readFile():读取指定文件中的内容


参数 1:必选参数,字符串,表示文件的路径

参数 2:可选参数,表示以什么编码格式来读取文件

参数 3:必选参数,文件读取完成后,通过回调函数拿到读取的结果

fs.readFile(path, [options], callback)

示例1:读取 demo.txt 文件

5e315f514b0d49dc9797aed4db9c8049.png

demo.txt 文件

'前端杂货铺'

app.js 文件

// 导入 fs 文件系统模块
const fs = require('fs')
// 读取文件 utf-8 为中文编码格式
fs.readFile('../files/demo.txt', 'utf-8', function (err, data) {
    console.log('err:', err)
    console.log('data:', data)
})

c877f8cc3570427ebd9eb3fda92e0bf8.png

备注:若写错路径,即文件读取失败,打印内容如下【err为错误对象,data为undefined】

9bbe6b7ebfb64a139b07819ca4fe8dc9.png

示例2:判断读取 demo.txt 文件是否成功

app.js 文件

  • 故意写错路径,读取失败
  • 失败的结果如下
// 导入 fs 模块
const fs = require('fs')
// 读取文件
fs.readFile('../files/demo1.txt', 'utf-8', function (err, data) {
    if(err) {
        return console.log('读取文件失败', err.message)
    }
    console.log('data:', data)
})

73f70944c47a421cae00caf55e53cad2.png

2、写入指定文件

fs.writeFile():向指定的文件中写入内容


参数 1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径

参数 2:必选参数,表示要写入的内容

参数 3:可选参数,表示以什么格式写入文件内容,默认 utf-8

参数 4:必选参数,文件写入完成后的回调函数

fs.writeFile(file, data, [options], callback)

示例1:写入 demo.txt 文件

5e315f514b0d49dc9797aed4db9c8049.png

demo.txt 文件

// 该文件内容为空

app.js 文件

// 导入 fs 文件系统模块
const fs = require('fs')
// 写入文件内容
fs.writeFile('../files/demo.txt', '这里是前端杂货铺', function(err, data) {
    if (err) {
        return console.log('写入文件失败', err.message)
    }
    console.log('文件写入成功')
})

409f5615c1274f9fa931d8803b19d9f4.png

备注:若写入不存在的盘中,即文件写入失败,打印内容如下

9cf08f5d7ff34fdb9f76e05d52352f31.png

3、整理成绩案例

示例:成绩的格式转换

转换前的成绩格式

540cfba734974533871ec378cdf0426c.png

转换后的成绩格式

e531d7720b5b45e89b1dadc54802ed49.png

文件格式如下

c771677d725046c095e95eca6f881f60.png

score.txt 文件

  • 写入成绩内容
杂货铺=100 张三=98 李四=95 王五=92

app.js 文件


导入需要的 fs 文件模块

使用 fs.readFile() 方法,读取素材目录下的 score.txt 文件

判断文件是否读取失败

文件读取成功后,处理成绩数据

将处理完成的成绩数据,调用 fs.writeFile() 方法,写入到新文件 newScore.txt 中

// 导入 fs 文件系统模块
const fs = require('fs')
// 写入文件内容
fs.readFile('../files/score.txt', 'utf-8', function (err, data) {
    // 判断是否读取成功
    if (err) {
        return console.log('读取文件失败' + err.message)
    }
    // 把成绩按空格进行分割
    const arrOld = data.split(' ')
    // 新数组的存放
    const arrNew = []
    // 循环分割后的数组 对每一项数据 进行字符串的替换操作
    arrOld.forEach(item => {
        arrNew.push(item.replace('=', ':'))
    })
    // 把新数组中的每一项合并 得到新的字符串
    const newStr = arrNew.join('\r\n')
    // 写入新数据
    fs.writeFile('../files/newScore.txt', newStr, function (err) {
        if (err) {
            return console.log('写入成绩失败' + err.message)
        }
        console.log('成绩写入成功')
    })
})

951cc64cb2f245fc877f32192cefc1a2.png

99387bffc6cf46c982fa5cdf9df36ec9.png

4、处理路径

__dirname:表示当前文件所处的目录

示例:写相对路径

7b11ed0df2be4dce8444a6c65282ba2f.png

const fs = require('fs')
fs.readFile('../files/score.txt', 'utf-8', function(err, data) {
    if (err) {
        return console.log('文件读取失败' + err.message)
    }
    console.log('文件读取成功')
})

924e97af80e54ce08b785f035e111f97.png

示例:使用 __dirname

613e177d69884e639f68be63098e0dcf.png

const fs = require('fs')
// 读取文件
fs.readFile(__dirname + '/files/score.txt', 'utf-8', function(err, data) {
    if (err) {
        return console.log('文件读取失败' + err.message)
    }
    console.log('文件读取成功')
})

32fb27ee5297416caeef425d9d41227d.png

二、path 路径模块

path 模块是 Node.js 官方提供的、用来处理路径的模块


1、path.join() 路径拼接

path.join():用来将多个路径判断拼接成一个完整的路径字符串


参数:…paths <string> 路径片段的序列

返回值:返回值 <string>

path.join([...paths])

示例:路径拼接

// 导入 path 模块
const path = require('path')
// ../ 会抵消前面的路径
const pathStr = path.join('/a','/b/c', '../', './d', 'e')
console.log(pathStr)

7c1adca5307647b2b0f72c1ebabef11f.png

备注:涉及到路径拼接的操作,都要使用 path.join() 方法进行处理。不要直接用 + 进行字符串拼接

示例:使用 path 进行路径拼接

const fs = require('fs')
const path = require('path')
// 文件读取
fs.readFile(path.join(__dirname, '/files/score.txt'), 'utf-8', function(err, data) {
    if (err) {
        return console.log('文件读取失败', err.message)
    }
    console.log('文件读取成功')
})

0b5d3b318dd94b2aaae0b02759c2b388.png

2、path.basename() 解析文件名

path.basename():用来从路径字符串中,将文件名解析出来

参数 1:path 必选参数,表示一个路径的字符串

参数 2:ext 可选参数,表达文件扩展名

返回值:返回 表示路径中的最后一部分

path.basename(path, [ext])

示例:解析路径,去除扩展名

// 导入 path 模块
const path = require('path')
// 文件的存放路径
const fpath = '/a/b/c/index.html'
// 将文件名解析出来
const fullName = path.basename(fpath)
console.log(fullName) // 输出 index.html
// 去除扩展名
const nameWithoutExt = path.basename(fpath, '.html')
console.log(nameWithoutExt) // 输出 index

acbf14e405c74720851d8f05875393b2.png

3、path.extname() 获取扩展名

path.extname():可以获取路径中的扩展名部分

参数:path <string> 必选参数,表示一个路径的字符串

返回值:返回 <string> 返回得到的扩展名字符串

path.extname(path)

示例:获取扩展名

// 导入 path 模块
const path = require('path')
// 文件的存放路径
const fpath = '/a/b/c/index.html'
// 获取扩展名
const fext = path.extname(fpath)
console.log(fext) // .html

32de869ad1d34c64be649b8a5b077bd0.png

e08f7aa0c7964bffa909aced8e11f114.png

相关文章
|
10天前
|
JavaScript
浏览器插件crx文件--JS混淆与解密
浏览器插件crx文件--JS混淆与解密
15 0
|
2天前
|
消息中间件 监控 JavaScript
Node.js中的进程管理:child_process模块与进程管理
【4月更文挑战第30天】Node.js的`child_process`模块用于创建子进程,支持执行系统命令、运行脚本和进程间通信。主要方法包括:`exec`(执行命令,适合简单任务)、`execFile`(安全执行文件)、`spawn`(实时通信,处理大量数据)和`fork`(创建Node.js子进程,支持IPC)。有效的进程管理策略涉及限制并发进程、处理错误和退出事件、使用流通信、谨慎使用IPC以及监控和日志记录,以确保应用的稳定性和性能。
|
3天前
|
缓存 JavaScript 前端开发
Node.js的模块系统:CommonJS模块系统的使用
【4月更文挑战第29天】Node.js采用CommonJS作为模块系统,每个文件视为独立模块,通过`module.exports`导出和`require`引入实现依赖。模块有独立作用域,保证封装性,防止命名冲突。引入的模块会被缓存,提高加载效率并确保一致性。利用CommonJS,开发者能编写更模块化、可维护的代码。
|
4天前
|
Rust JavaScript 安全
🚀JS使用Wasm为你的文件MD5计算装上火箭引擎🚀
🚀JS使用Wasm为你的文件MD5计算装上火箭引擎🚀
|
4天前
|
运维 JavaScript Java
Serverless 应用引擎产品使用之阿里云Serverless函数计算中,在Node.js环境中执行jar文件如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
12 0
|
7天前
|
JSON 关系型数据库 MySQL
node笔记_读取目录的文件
node笔记_读取目录的文件
12 1
|
17天前
|
JavaScript API
node.js之模块系统
node.js之模块系统
|
10天前
|
JSON JavaScript 前端开发
❤Nodejs 第九章(token身份认证和express-jwt的安装认识)
【4月更文挑战第9天】Node.js第九章介绍了Token身份认证,特别是JWT(JSON Web Token)作为跨域认证的解决方案。JWT由Header、Payload和Signature三部分组成,用于在客户端和服务器间安全传输用户信息。前端收到JWT后存储在localStorage或sessionStorage中,并在请求头中发送。Express-JWT是一个中间件,用于解析JWT。基本用法包括设置secret和algorithms。注意安全问题,避免混合使用不同算法以防止降级攻击。
34 0