なにかのプロセスで開いたままになってて消せなくて そのプロセスを見つけて停止することってよくあるし
でも普通に消せるみたい
Node.js で stream で書き込み中にエクスプローラーからファイルを消してみる
const stream = require("fs").createWriteStream("foo.txt")
stream.on("error", err => console.log({ err }))
setInterval(() => {
stream.write(
Date.now() + "\n",
(err, result) => console.log({ err, result })
)
}, 1000)
↑で毎秒書き込むので適当なところでファイルを消す
例のエラーはなく 普通に消せる
消したあとに ファイルを開いたプロセスが書きこむとどうなるか気になったけど 何も起きないみたい
書き込みは成功扱いで特にエラーは起きない
書き込み時に新規にファイルが作られるわけではなく どこにも出力されない
Linux での扱いと同じみたい
ということは消せないエラーが出てくるものはわざわざ追加でロックするような処理をしてる?
言語によってはデフォルトの挙動がそうなってるのかも
Windows だと OS やファイルシステムの都合で開いてるファイルは消せないものだと思ってたけど できるんだったらこの動きをデフォルトにしてほしい
どこかで開いてるからってエラー出されても面倒なだけで このエラーを見るたび Linux のほうがこういうところは便利だな―と思ってるくらいなので