Node.js 如何直接读取文件内容不返回Buffer及删除文件夹的方法
Node.js 实操问题解决方案
读取文本文件时直接获取内容、避免返回Buffer的实现
Node.js 内置fs模块的文件读取方法,在未显式指定编码参数时,默认会返回Buffer类型的二进制原始数据。如果需要直接拿到read.txt这类文本文件的实际可读内容,只需要在读取调用时传入对应的编码参数即可,不需要额外做Buffer转字符串的手动处理。
- 回调形式
fs.readFile实现:
const fs = require('fs') // 第二个参数传入'utf8'编码 fs.readFile('./read.txt', 'utf8', (err, data) => { if (err) throw err // 此处data直接为文件文本内容,不再是*Buffer类型* console.log(data) })
- Promise形式
fs.promises.readFile实现:
const fs = require('fs/promises') async function getFileContent() { // 同样传入编码参数 const content = await fs.readFile('./read.txt', 'utf8') console.log(content) }
注意:如果读取的是图片、音视频这类二进制资源,才需要保留默认的Buffer类型返回值,文本类文件使用
utf8编码是最通用的处理方案。
Node.js 环境下删除文件夹的实现
不同Node.js版本的目录删除能力存在差异,可根据运行环境选择对应实现:
- Node.js v14.14.0 及以上版本:直接使用内置
fs.rm/fs.rmSync方法,开启递归参数即可删除包含子文件、子目录的文件夹,无需依赖第三方工具库
const fs = require('fs') // 同步删除目标目录,配置参数说明: // recursive: true 递归删除目录下所有层级的内容 // force: true 目录不存在时不抛出异常 fs.rmSync('./target-folder', { recursive: true, force: true })
- 低版本Node.js兼容实现:对于未支持
fs.rm的旧版本,可使用fs.rmdir开启递归参数完成删除
const fs = require('fs') fs.rmdir('./target-folder', { recursive: true }, (err) => { if (err) throw err })
提醒:目录删除操作不可逆,执行前务必校验目标路径,避免误删业务文件。
内容的提问来源于stack exchange,提问作者sayandey_dev
相关产品推荐
相关产品推荐

