Windows環境でRubyでファイルを操作する際の注意

Mac版では起きないのになー

filename = "hoge.txt"

File.open(filename, 'w') do |file|
  File.unlink(filename)
end


結果は次の通り。

file_unlink.rb:3:in `unlink': Permission denied - hoge.txt (Errno::EACCES)
        from file_unlink.rb:3
        from file_unlink.rb:2:in `open'
        from file_unlink.rb:2


他にも、File.rename とか、ファイル自体を操作するとPermissionエラーになる。

原因

そういえば、Windowsって、ファイルをどっかで開いていてファイルを消そうとすると、「ファイルは次のプログラムによって使用されています・・・続行する前にファイルを閉じてください」ってエラーする。原因はこれだ。
修正版はこちら。

filename = "hoge.txt"

File.open(filename, 'w') do |file|
end

File.unlink(filename)  


closeしてからでないと、ファイル自体への操作はできないんですね。