Javascript Node Js:测试一个文件是否被另一个进程锁定进行编辑

Javascript Node Js:测试一个文件是否被另一个进程锁定进行编辑,javascript,node.js,Javascript,Node.js,我正在用NodeJs编写一些代码,希望检查该文件是否正在被另一个进程使用,如果正在使用,则不执行任何操作,如果未使用,则执行某些操作 fs.stats是一种,此时文件大小是多少。并且没有告诉我它是否正在从另一个进程使用 不知道还有什么可以尝试的 在尝试使用nodejs访问文件之前,判断文件当前是否被另一个进程锁定以进行编辑的最佳方法是什么?在注释中给出一些指示后,我最终使用的代码 var delInterval = setInterval(del(), 1000); function del(

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

fs.stats是一种,此时文件大小是多少。并且没有告诉我它是否正在从另一个进程使用

不知道还有什么可以尝试的


在尝试使用nodejs访问文件之前,判断文件当前是否被另一个进程锁定以进行编辑的最佳方法是什么?

在注释中给出一些指示后,我最终使用的代码

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);
                    }
                });
            });
        }
    });
}

我不认为
fs
在编辑时真的会锁定文件,如果可以,它会进行编辑,然后调用回调,如果不成功,回调的第一个参数将是错误的。您是对的,node不会锁定文件,但是如果文件当前正由FTP上载,则FTP服务器会将其锁定以进行编辑。此时,我想忽略该文件。如果外部进程不再锁定该文件以进行编辑,则只有在那时我才希望与该文件交互。如果该文件确实被锁定,则尝试使用
fs
访问它将在回调中生成一个可以处理的错误。另一个选项是在上载文件时在映射中设置某种标志,然后在FTP上载完成时清除该标志,然后使用映射查看文件是否完成。