javascript 节点Js:测试文件是否被另一个进程锁定以进行编辑

qnyhuwrf  于 2023-01-08  发布在  Java
关注(0)|答案(2)|浏览(106)

我正在NodeJs中编写一些代码,并希望检查该文件是否正在被另一个进程使用,如果是,则不执行任何操作,如果不在使用中,则执行一些操作。
stats是一种,在这个瞬间,文件大小是多少,并且不告诉我它是否正在被另一个进程使用。
不知道还能尝试什么。
在尝试使用nodejs访问文件之前,判断文件当前是否被另一个进程锁定以进行编辑的最佳方法是什么?

mlmc2os5

mlmc2os51#

代码,我结束了使用后,一些指令,从评论离开。

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

z0qdvdin2#

我想到了一个更小的方法,所以我想分享一下:

function isWritable() {
  let fileAccess = false
  try {
      fs.closeSync(fs.openSync(filePath, 'r+'))
      fileAccess = true
  } catch (err) {
      console.log('can not open file!')
  }
  return fileAccess
}

相关问题