IO模块
发布日期:2021-05-07 23:09:04 浏览次数:21 分类:精选文章

本文共 2434 字,大约阅读时间需要 8 分钟。

IO与Node.js文件操作模块(fs模块)

IO(输入输出)是计算机科学中的基本概念,指计算机与外部设备(如磁盘、打印机、网络卡等)进行数据传输的过程。在Node.js中,IO操作是与外部设备直接交互的重要环节,但其速度通常低于CPU与内存之间的交互速度。因此,在Node.js中,大多数文件操作API都采用异步方式执行,以避免阻塞JavaScript执行环境。


fs模块:处理文件操作

Node.js内置了fs模块,用于处理文件操作。由于IO操作速度较慢,Node.js采用异步模式来提升性能,特别是在Node.js 12及以上版本,fs.promises API提供了基于Promise的文件操作方法。

1. 读取文件

readFile方法用于读取文件内容,默认使用utf-8编码格式。例如:

const fs = require("fs");
const path = require("path");
// 读取文件内容
const filePath = path.resolve(__dirname, "./1.txt");
fs.readFile(filePath, "utf-8", (err, content) => {
console.log(content.toString());
});

如果需要使用Promise方式,可以使用fs.promises.readFile

async function test() {
const filePath = path.resolve(__dirname, "./1.txt");
const content = await fs.promises.readFile(filePath, "utf-8");
console.log(content);
}

2. 写入文件

writeFile方法用于将内容写入文件,默认使用utf-8编码格式。文件路径可以通过path.resolve拼接:

const fs = require("fs");
const path = require("path");
// 示例文件路径
const filePath = path.resolve(__dirname, "./2.txt");
// 写入内容
async function test() {
const buffer = Buffer.from("dasdasfsa", "utf-8");
await fs.promises.writeFile(filePath, buffer, {
flag: "a", // 追加模式
});
console.log("文件已成功写入");
}

3. 获取文件状态

stat方法用于获取文件或目录的状态信息,返回一个包含详细属性的对象。例如:

const fs = require("fs");
const path = require("path");
// 示例文件路径
const filePath = path.resolve(__dirname, "./1.txt");
// 获取文件状态
async function test() {
const state = await fs.promises.stat(filePath);
// 检查是否是文件或目录
console.log(state.isDirectory(), state.isFile());
}

4. 读取文件目录

readdir方法用于读取文件目录中的文件和子目录。例如:

const fs = require("fs");
const path = require("path");
// 示例文件路径
const filePath = path.resolve(__dirname, "./1.txt");
// 读取文件子目录
async function test() {
const files = await fs.promises.readdir(filePath);
console.log(files);
}

5. 创建目录

mkdir方法用于创建目录。可以使用以下方式执行:

const fs = require("fs");
const path = require("path");
// 示例目录路径
const dirPath = path.resolve(__dirname, "./newDir");
// 创建目录
async function test() {
await fs.promises.mkdir(dirPath, { recursive: true });
console.log("目录已成功创建");
}

6. 删除文件或目录

unlink方法用于删除文件或目录。需要谨慎使用:

const fs = require("fs");
const path = require("path");
// 示例文件或目录路径
const filePath = path.resolve(__dirname, "./1.txt");
// 删除文件
async function test() {
await fs.promises.unlink(filePath);
console.log("文件已成功删除");
}

总结

通过fs模块,Node.js提供了强大的文件操作能力,适用于处理各种文件操作需求。从读取文件到写入文件,再到获取文件状态、读取目录、创建目录和删除文件,fs模块都提供了相应的API。使用异步操作模式可以有效避免IO阻塞,提升Node.js应用的性能。

上一篇:文件流
下一篇:手动封装获取文件子目录和内容

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年04月10日 16时35分15秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章