Skip to content

文件读写

提示

涉及到的文件读写 fs 使用的都是fs-extra

1. 写入文件

js
import fs from 'node:fs'

fs.writeFile('example.txt', 'hello NodeJS\n', err => {
  if (err) throw err
  console.log('文件已创建')
})
js
import fs from 'fs-extra'

try {
  await fs.writeFile('example.txt', 'hello NodeJS\n')
  console.log('文件已创建')
} catch (err) {
  console.log(err)
}

问: 为什么引入模块要写为node:fs ?

答: 写为node:fs 是为保证引入的 fs 来自于 node 本身, 避免引入重名的包文件模块

2. 追加文件

js
import fs from 'node:fs'

// 第一种
fs.appendFile('example.txt', 'hello NodeJS\n', err => {
  if (err) throw err
  console.log('文件已创建')
})

// 第二种
fs.writeFile('example.txt', 'hello NodeJS\n', { flag: 'a' }, err => {
  if (err) throw err
  console.log('文件已创建')
})
js
import fs from 'fs-extra'

// 第一种
try {
  await fs.appendFile('example.txt', 'hello NodeJS\n')
  console.log('文件已创建')
} catch (err) {
  console.log(err)
}

// 第二种
try {
  await fs.writeFile('example.txt', 'hello NodeJS\n', { flag: 'a' })
  console.log('文件已创建')
} catch (err) {
  console.log(err)
}

ndoejs 中 fs.appednFile 和 fs.writeFile 使用 flag a 追加模式 有区别吗

答: 使用 fs.writeFile 并设置 flag: 'a',那么它和 fs.appendFile 在追加内容到文件方面是没有区别的。

这两种方法的选择取决于你的具体需求和使用场景。如果只是需要追加内容,fs.appendFile 是更简洁的 API 选择。

如果你需要在写入文件时有更多的控制(比如覆写或者追加的选择),则可以使用 fs.writeFile 并通过 flag 参数来指定不同的操作模式。

3. 流式写入

为什么要进行流式写入?

流式写入 适合大文件,或者频繁写入的文件,减少打开关闭文件的次数,提高性能