检查文件内容的变化

Checking for changes in file content

我正在编写一个脚本来检查目录中的 JSON 个文件,并使用包含在这些文件中找到的数据的文档更新 MongoDB 集合。

我想检查文件自上次用于更新文档后是否发生过更改。

目前,我正在使用此代码检查 JSON files/read 它们的内容:

import fs from 'fs'

fs.readdir(`../Items`, (err, files) => {
  if (err) console.error(err)

  files = files.filter((file) => file.split('.').pop() === 'json')

  if (files.length <= 0) return console.error('No items to process!')

  files.forEach((file, i) => {
    fs.readFile(`../Items/${file}`, (err, data) => {
      if (err) return console.error(err)
      console.log(data)
    })
  })
})

我认为找出文件的最后修改日期及其 MD5 哈希值是可行的方法,但我不确定如何使用 fs 获取这些信息。

您可以使用 stat 函数的 mtime 属性来执行此操作。 在 attacomsian

查看更多信息
const fs = require('fs');

// fetch file details
fs.stat('file.txt', (err, stats) => {
    if(err) {
        throw err;
    }

    // print file last modified date
    console.log(`File Data Last Modified: ${stats.mtime}`);
    console.log(`File Status Last Modified: ${stats.ctime}`);
});

我建议使用哈希检查文件内容是否被更改。每当文件内容发生变化时,哈希值也会发生变化,这要可靠得多。这段代码可以帮助你。希望对你有帮助。

const crypto = require('crypto')
const fs = require('fs')

const fileContent = fs.readFileSync('./uploadedFile.json', { encoding: 'utf-8' })
const fileUploadedHash = crypto.createHash('md5').update(fileContent).digest('base64');

if(fileUploadedHash !== existingFileHash) {
  // update data in MongoDB
}