javascript - FS 文件观察器,获取更改

标签 javascript node.js json

我想使用 node.js 实现一个文件系统观察器,以便它监视特定 JSON 文件的更改。

然后,我想了解文件内部发生了什么变化。

最佳答案

这是一种方法:

  • 加载当前文件内容并将其解析为对象,并将其保留在内存中。
  • 使用 fs.watch 监视文件更改.
  • 发生更改时,将新文件内容作为对象加载。
  • 在当前对象和新对象之间执行对象比较;例如使用 diff .
  • 将当前对象设置为新对象。
  • 更改时重复。

这是一个例子:

const fs = require('fs')
const diff = require('deep-diff')

const filepath = './foo.json'
const getCurrent = () => JSON.parse(fs.readFileSync(filepath, {
  encoding: 'utf8'
}))

let currObj = getCurrent()

fs.watch(filepath, { encoding: 'buffer' }, (eventType, filename) => {
  if (eventType !== 'change') return

  const newObj = getCurrent()
  const differences = diff(currObj, newObj)

  console.log(differences)
  // { kind: 'N' } for new key additions
  // { kind: 'E' } for edits
  // { kind: 'D' } for deletions

  currObj = newObj
})

请注意,为了简洁起见,我在这里使用 fs.readFileSync。您最好使用非阻塞的 fs.readFile 来代替。

关于javascript - FS 文件观察器,获取更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54525895/

相关文章:

node.js - Koajs如何发送json响应

json - 如何从 YouTube V3 api 检索 URL 值?

javascript - 检索所有禁用的 asp 按钮并应用 css

javascript - 在预定义的 Mongoose 结构中连接多个数据库

javascript - 在 Node.JS 浏览器代码中找不到缓冲区

node.js - 如何启动 Storybook?

javascript - 需要使用 JavaScript 循环 JSON 的帮助。奇怪的行为

json - Microsoft Graph API 正在为 MSA 用户返回未知错误

javascript - 更新 Angular ng-model 中的 HTML 输入值更改

javascript - 在父 div 中获取文本