如何查看该文件是否未被其他进程打开?
现在我使用 OS.File.move(...)来回移动文件:
var promise = OS.File.move(filePath, newFilePath);
promise.then(
function onFulfilled(){
OS.File.move(newFilePath, filePath);
// Success
},
function onRejected(){
// Fail. Ask user to close another application
}
);
但这个解决方案很奇怪。还有其他方法可以执行此检查吗?
答案 0 :(得分:1)
这是一个很好的问题。你有一个很好的解决方案!你可能想坚持使用这种方法。我从来没有这样,我必须在mac / * nix上测试它以确保,但听起来它应该工作,就好像一个文件在使用它不应该是可移动的。几年前我一直在努力解决这个问题。
也可以移动,你可以重命名。重命名与OS.File.move
相同,但是在同一目录中。
非技巧方式需要js-ctypes:
在Windows上,您可以执行此操作OS.File.open
,如果失败,则会打开。如果成功,请确保.close()
,因为其他人没有使用它。这不会对mac / * nix起作用,因为open
可以打开任何内容。
在Mac / * nix上,您必须使用open
,然后使用fcntl
,然后通过js-ctypes close
,就像我在此处所做的那样:https://github.com/Noitidart/Profilist/blob/219f225643828a000c60d01ea212505bb0817ff5/modules/workers/MainWorker.js#L1313
你可以在同一个函数中看到,在上面的块中,如果是Windows,我会OS.File.open
。我的代码在这里有点复杂,因为我也获得了打开它的进程的pid
。
我在ostypes
lib - https://github.com/Noitidart/ostypes中定义了所有这些内容 - 您可以导入并立即使用它。
答案 1 :(得分:0)
自己打开它。如果它可以打开,你可以做你想做的事情。如果没有,请要求操作员关闭并在确认关闭后重试