2011-05-16 97 views
20
Dir.delete("/usr/local/var/lib/trisul/CONTEXT0/meters/oper/SLICE.9stMxh") 

導致此錯誤:如何使用Dir類刪除非空目錄?

Directory not empty - /usr/local/var/lib/trisul/CONTEXT0/meters/oper/SLICE.9stMxh

如何甚至刪除一個目錄時,它仍包含的文件嗎?

回答

47

Dir不可能(除了自己迭代目錄或使用Dir.glob並刪除所有內容)。

您應該使用

require 'fileutils' 
FileUtils.rm_r "/usr/local/var/lib/trisul/CONTEXT0/meters/oper/SLICE.9stMxh" 
7

當你刪除一個目錄與Dir.delete,也會搜索子目錄的文件。

Dir.delete("/usr/local/var/lib/trisul/CONTEXT0/meters/oper/SLICE.9stMxh") 

如果該目錄不爲空,則會引發Directory not empty錯誤。對於那個紅寶石有FiltUtils.rm_r的方法,無論如何都會刪除目錄!

require 'fileutils' 
FileUtils.rm_r "/usr/local/var/lib/trisul/CONTEXT0/meters/oper/SLICE.9stMxh" 
+1

即使FileUtils.rm_r路徑給出Directory不爲空@ dir_s_rmdir錯誤。 – 2017-10-13 11:52:34