一尘不染

节点Js:测试以查看文件是否被锁定以供其他进程编辑

node.js

我正在NodeJs中编写一些代码,并想检查该文件是否正在被另一个进程使用,如果不执行则不执行任何操作,如果不使用则执行某些操作。

fs.stats有点像,这时文件大小是多少。并且不告诉我当前是否正在其他进程中使用它。

不知道还有什么尝试。

在尝试使用nodejs访问文件之前,最好的方法是判断文件当前是否已被锁定以供其他进程编辑?


阅读 314

收藏
2020-07-07

共1个答案

一尘不染

经过一些评论后,我最终使用了代码。

var delInterval = setInterval(del(), 1000);

function del(){
    fs.open(filePath, 'r+', function(err, fd){
        if (err && err.code === 'EBUSY'){
            //do nothing till next loop
        } else if (err && err.code === 'ENOENT'){
            console.log(filePath, 'deleted');
            clearInterval(delInterval);
        } else {
            fs.close(fd, function(){
                fs.unlink(filePath, function(err){
                    if(err){
                    } else {
                    console.log(filePath, 'deleted');
                    clearInterval(delInterval);
                    }
                });
            });
        }
    });
}
2020-07-07