2011-06-29 78 views

回答

4
require "open-uri" 

open("http://www.whatever.com/x.png") do |hnd| 
    File.open("x.png","wb") {|file| file.puts hnd.read } 
end 

編輯:

這允許您使用開放加載的網站,並把它當作正常的文件句柄:

require "open-uri"

這會將你的形象,並通過一個手柄作爲參數hnd

open("http://www.whatever.com/x.png") do |hnd| 

這種以二進制方式打開文件(需要在Windows系統上),以及頁面的內容寫入到它:通過讀取方法,它試圖寫它之前完全閱讀獲得

File.open("x.png","wb") {|file| file.puts hnd.read } 

內容。

+0

節省什麼? 'read'?你能解釋一下你指定的路徑嗎?你爲什麼要'放'這個文件? –

+0

@Justin:他沒有使用'Kernel.puts',而是'File#puts',它將寫入一個文件。請注意,該特定的調用是在一個塊中傳遞給'File.open','file'是一個塊本地變量。 – coreyward

+0

@coreyward我仍然想更深入地解釋這段代碼究竟發生了什麼,比如每種方法在做什麼。 –

相關問題