nodejs读写一个文件有多少种方法?
封面图
•
2026-01-11
•
nodejs
265
0
0
0
在 Node.js 中,读写文件有多种方法,主要取决于你使用的模块和 API。以下是常见的几种方式: --- ## 一、Node.js 内置模块(原生方法) ### 1. **`fs` 模块(同步/异步)** #### 1.1 异步方法(推荐用于生产环境) - `fs.readFile()`:读取文件 - `fs.writeFile()`:写入文件 - `fs.appendFile()`:追加内容 - `fs.unlink()`:删除文件 - `fs.rename()`:重命名文件 ```js const fs = require('fs'); // 异步读取文件 fs.readFile('file.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data); }); // 异步写入文件 fs.writeFile('file.txt', 'Hello, world!', (err) => { if (err) throw err; console.log('文件已写入'); }); ``` #### 1.2 同步方法(不推荐用于高并发场景) - `fs.readFileSync()` - `fs.writeFileSync()` ```js const data = fs.readFileSync('file.txt', 'utf8'); console.log(data); fs.writeFileSync('file.txt', 'Hello, world!'); ``` --- ### 2. **`fs/promises` 模块(基于 Promise 的异步方法)** 这是 Node.js v14+ 推荐的现代方式,使用 `async/await` 更清晰。 ```js const fs = require('fs').promises; async function readWriteFile() { try { const data = await fs.readFile('file.txt', 'utf8'); console.log(data); await fs.writeFile('file.txt', 'Hello, world!'); console.log('文件已写入'); } catch (err) { console.error(err); } } ``` --- ### 3. **流式读写(适合大文件)** 使用 `fs.createReadStream()` 和 `fs.createWriteStream()` 实现流式读写,适用于大文件处理。 ```js const fs = require('fs'); // 读取流 const readStream = fs.createReadStream('input.txt', 'utf8'); readStream.on('data', (chunk) => { console.log('读取到:', chunk); }); // 写入流 const writeStream = fs.createWriteStream('output.txt'); writeStream.write('Hello, stream!'); writeStream.end(); ``` --- ## 二、第三方库(更高级或更易用的 API) ### 1. **`fs-extra`(基于 `fs` 的封装)** 提供了更多便捷的方法,比如 `copy`, `remove`, `ensureDir` 等。 ```js const fs = require('fs-extra'); fs.writeFileSync('file.txt', 'Hello, fs-extra!'); ``` ### 2. **`fstream` 或 `through2`(流操作)** 用于构建自定义的流管道,适合复杂的文件处理逻辑。 ### 3. **`path` 模块(路径处理)** 虽然不是直接读写文件,但常与 `fs` 配合使用来处理路径问题。 ```js const path = require('path'); const filePath = path.join(__dirname, 'file.txt'); ``` --- ## 三、Node.js 中读写文件的分类总结 | 方法类型 | 是否阻塞 | 是否支持大文件 | 是否推荐 | |----------|----------|----------------|----------| | `fs.readFileSync()` | 是 | 否 | 不推荐 | | `fs.readFile()` | 否 | 是 | 推荐 | | `fs.promises.readFile()` | 否 | 是 | 推荐 | | 流式读写(createReadStream/writeStream) | 否 | 是 | 推荐 | | 第三方库(如 fs-extra) | 否 | 是 | 推荐 | --- ## 四、常见读写场景 | 场景 | 推荐方法 | |------|----------| | 小文件读写 | `fs.readFile()` / `fs.writeFile()` | | 大文件处理 | 流式读写(createReadStream/writeStream) | | 异步非阻塞 | `fs.promises` 或 `async/await` | | 文件复制、删除等 | `fs-extra` | --- ## 总结 Node.js 中读写文件的方法大致有以下几种: 1. 原生 `fs` 模块(同步/异步) 2. `fs/promises`(Promise 风格) 3. 流式读写(适合大文件) 4. 第三方库(如 `fs-extra`) 根据你的需求选择合适的方式即可。 如果你需要具体示例或更详细的说明,可以继续问我!
上一篇:
如何让一个 JavaScript文件变得像 Linux命令一样可执行?
下一篇:
fs.watch和 fs.watchFile有什么区别?
标题录入,一次不能超过6条
留言
评论