首页 > 解决方案 > Node.js 从磁盘读取文件

问题描述

我想在discord状态下写NP音乐。Google Play 音乐桌面播放器有一个playback.json 文件,我需要在我的node.js 中检查这个文件,并在不和谐状态下更改音乐。此刻我有这个代码来检查这个文件

const fs = require(`fs`)

var song = [];

check();

function check() {
    fs.readFile("C:\\Users\\lensh\\AppData\\Roaming\\Google Play Music Desktop Player\\json_store\\playback.json", (err, data) => {
        let playback = JSON.parse(data)
        console.log(`Checking...`)
        if(playback.playing !== `true`) return setTimeout(() => {check()}, 10000), console.log(`IDLE.`), idle();
        else {
            if(song.includes(playback.song.title)) return setTimeout(() => {check();}, 10000), console.log(`Waiting...`), console.log(song), console.log(playback.song.title);
            else {
                song.splice(0, song.length);
                song.push(playback.song.title);
                status(playback.song.artist, playback.song.title);
                setTimeout(() => {check();}, 15000)
            }
        }
    });
}

问题是 node.js 仅在启动时读取文件,然后 node.js 没有检查此文件是否有任何更改。如何解决这个问题呢?

PS对不起我的英语

标签: node.js

解决方案


您无需手动操作。您可以使用 node.js 监视文件 API 并在更改时加载文件。

const fs = require("fs")
let lastUpdated = new Date()
fs.watchFile("./test.json", (curr, prev) => {
  if(curr.mtime.getTime() - lastUpdated.getTime() > 2 *1000) { // after 2 min
    // DO something here
    console.log(`the current mtime is: ${curr.mtime}`);
    lastUpdated = curr.mtime
  }
})

参考: https ://nodejs.org/docs/latest/api/fs.html#fs_fs_watch_filename_options_listener


推荐阅读