Это отличный вопрос. И у вас там отличное решение! Вероятно, вы захотите придерживаться этого метода. Я никогда этого не делал, мне нужно проверить его на mac/* nix, чтобы убедиться, но похоже, что он должен работать, как будто файл используется, он не должен быть подвижным. Я боролся с этим пару лет назад.
Кроме того, вместо этого вы можете переименовать. Переименование - это то же самое, что и OS.File.move
, но в том же каталоге.
Не-трик способ требует JS-ctypes:
В Windows вы можете сделать это OS.File.open
и если это не удается, то он открыт. Если вам удастся сделать так, чтобы .close()
, поскольку он не использовался другим. Это не будет работать на mac/* nix, поскольку open
может открыть что угодно.
На макинтош/* Никс вы должны использовать open
затем fcntl
затем close
с помощью JS-ctypes, как я сделал здесь: https://github.com/Noitidart/Profilist/blob/219f225643828a000c60d01ea212505bb0817ff5/modules/workers/MainWorker.js#L1313
Вы можете увидеть в этой же функции, в приведенном выше блоке, если это Windows, я OS.File.open
. Мой код здесь немного сложнее, потому что я также получаю pid
процесса, в котором он открыт.
Я определил все это в ostypes
lib - https://github.com/Noitidart/ostypes - вы можете импортировать это и использовать его сразу же.
Это будет работать только для Windows. В Linux/Unix этого не произойдет. См. Мое решение ниже. – Noitidart