2014-02-16 15 views
3

假設兩種ruby文件操作。我應該在Ruby中的File.read和File.open之後銷燬File對象嗎?

首先,

file = File.open("xxx") 
file.close 

其次,

file = File.read("xxx") 
file.close 

它是衆所周知的,我們使用完之後,我們應該關閉文件。但是,在第二個代碼塊,Ruby解釋拋出如下所示的錯誤消息:

in `<main>': undefined method `close' for #<String:0x000000022a3a08> (NoMethodError) 

我不需要在第二種情況下使用file.close?我想知道爲什麼?

回答

5

這是因爲File.read方法返回字符串與文件的內容,而不是File對象。是的,如果你使用File.read方法,你不需要明確地使用close,因爲ruby會自動爲你做。

3

Marek Lipka正確回答,我只是想讓你再次指向文檔句子。

我不需要在第二種情況下使用file.close?

你不需要這樣做。

閱讀該文檔IO::read小心:

打開文件,任選旨在給定的偏移量,然後返回長度字節(默認爲文件的其餘部分)。 read確保文件在返回之前關閉。