监视文本文件中的更改,并在不存在此文件时进行处理

问题描述 投票:0回答:1

我最近一直在做一个项目,基本上我需要检查文本文件中的新文本。我的代码是这样的:

const fs = require('fs');

fs.watch('./file.txt', (event, filename) => {
    fs.readFile('./file.txt', (err, data) => {
         if (err) throw err;
         data = JSON.parse(data);

         console.log(data);
    }
}

效果很好。但是,有时,无论出于何种原因,我都必须删除此文件,因此我的代码也会崩溃!

关于如何处理此问题的任何想法?谢谢您的回答

javascript node.js fs
1个回答
0
投票

Node的内置模块fs不能很好地支持文件删除检测。有一种解决方法是使用名为nsfw的程序包,该程序包是本机库的包装,可为删除检测提供更好的支持。该API有点奇怪,但它还是一个可靠的软件包。

这是您尝试使用nsfw进行操作的示例。

const nsfw = require("nsfw");
const path = require("path");
const fs = require("fs");

const file = path.join(__dirname, "file.txt");
let watcher;
nsfw(
    file,
    ([event, ...restEvents]) => {
        switch (event.action) {
            case nsfw.actions.DELETED: {
                watcher.stop();
                return; // or handle this however you need to..
            }
            default: {
                fs.readFile(file, (err, data) => {
                    if (err) throw err;

                    try {
                        data = JSON.parse(data);

                        console.log(data);
                    } catch (error) {
                        console.error(error)
                    }
                });
            }
        }
    }
)
.then((w) => {
    watcher = w;
    watcher.start()
});

© www.soinside.com 2019 - 2024. All rights reserved.