2016-01-21 113 views
0

我有一個動態生成的文件路徑陣列,其可能看起來像這樣:刪除文件失敗

paths = ["/lib/my_folder/foo", "/lib/my_folder/bar", "/lib/my_folder/baz", ...] 

所以我想這樣做:

for path in paths do |path| 
    File.delete(path) #if file exists 
end 

這是失敗的,因爲有時數組中的元素指向不再存在的文件。

我想:

for path in paths 
    if !path.blank? 
    File.delete(path) 
    end 
end 

,但仍然失敗了No such file or directory...錯誤味精。

我該如何去編寫一個循環來刪除數組中沒有失敗的元素?

回答

3
paths.each { |path| File.delete(path) if File.exists?(path) } 
+0

或'paths.select {| path | File.exists?(path)} .each {| path | File.delete(path)}'。 – mudasobwa