node.js 文件操作
在 Node.js 中,文件操作主要通过内置的 `fs`(File System)模块来实现。
1. 读取文件
const fs = require("fs");
// 异步读取文件
fs.readFile("example.txt", "utf8", (err, data) => {
if (err) {
console.error("读取文件时出错:", err);
return;
}
console.log("文件内容:", data);
});
// 同步读取文件
try {
const data = fs.readFileSync("example.txt", "utf8");
console.log("同步读取文件内容:", data);
} catch (err) {
console.error("同步读取文件时出错:", err);
}
2. 写入文件
const fs = require("fs");
// 异步写入文件
fs.writeFile("output.txt", "Hello, Node.js!", "utf8", (err) => {
if (err) {
console.error("写入文件时出错:", err);
return;
}
console.log("文件写入成功");
});
// 同步写入文件
try {
fs.writeFileSync("output.txt", "Hello, Node.js!", "utf8");
console.log("同步文件写入成功");
} catch (err) {
console.error("同步写入文件时出错:", err);
}
3. 追加文件内容
const fs = require("fs");
// 异步追加内容
fs.appendFile("output.txt", "\nThis is additional content.", "utf8", (err) => {
if (err) {
console.error("追加文件时出错:", err);
return;
}
console.log("文件追加成功");
});
// 同步追加内容
try {
fs.appendFileSync("output.txt", "\nThis is additional content.", "utf8");
console.log("同步文件追加成功");
} catch (err) {
console.error("同步追加文件时出错:", err);
}
4. 重命名文件
const fs = require("fs");
// 异步重命名文件
fs.rename("output.txt", "newOutput.txt", (err) => {
if (err) {
console.error("重命名文件时出错:", err);
return;
}
console.log("文件重命名成功");
});
// 同步重命名文件
try {
fs.renameSync("output.txt", "newOutput.txt");
console.log("同步文件重命名成功");
} catch (err) {
console.error("同步重命名文件时出错:", err);
}
5. 删除文件
const fs = require("fs");
// 异步删除文件
fs.unlink("newOutput.txt", (err) => {
if (err) {
console.error("删除文件时出错:", err);
return;
}
console.log("文件删除成功");
});
// 同步删除文件
try {
fs.unlinkSync("newOutput.txt");
console.log("同步文件删除成功");
} catch (err) {
console.error("同步删除文件时出错:", err);
}
6. 检查文件是否存在
const fs = require("fs");
fs.exists("example.txt", (exists) => {
console.log("文件是否存在:", exists);
});
const existsSync = fs.existsSync("example.txt");
console.log("同步检查文件是否存在:", existsSync);
7. 读取目录
const fs = require("fs");
// 异步读取目录
fs.readdir(".", (err, files) => {
if (err) {
console.error("读取目录时出错:", err);
return;
}
console.log("目录中的文件和目录:", files);
});
// 同步读取目录
try {
const files = fs.readdirSync(".");
console.log("同步读取目录中的文件和目录:", files);
} catch (err) {
console.error("同步读取目录时出错:", err);
}
8. 创建目录
const fs = require("fs");
// 异步创建目录
fs.mkdir("newDirectory", (err) => {
if (err) {
console.error("创建目录时出错:", err);
return;
}
console.log("目录创建成功");
});
// 同步创建目录
try {
fs.mkdirSync("newDirectory");
console.log("同步目录创建成功");
} catch (err) {
console.error("同步创建目录时出错:", err);
}
9. 删除目录
const fs = require("fs");
// 异步删除目录
fs.rmdir("newDirectory", (err) => {
if (err) {
console.error("删除目录时出错:", err);
return;
}
console.log("目录删除成功");
});
// 同步删除目录
try {
fs.rmdirSync("newDirectory");
console.log("同步目录删除成功");
} catch (err) {
console.error("同步删除目录时出错:", err);
}
10. 复制文件
const fs = require("fs");
const { promisify } = require("util");
// 异步复制文件
const copyFile = promisify(fs.copyFile);
copyFile("source.txt", "destination.txt")
.then(() => {
console.log("文件复制成功");
})
.catch((err) => {
console.error("复制文件时出错:", err);
});
// 同步复制文件
try {
fs.copyFileSync("source.txt", "destination.txt");
console.log("同步文件复制成功");
} catch (err) {
console.error("同步复制文件时出错:", err);
}