2012-10-29 163 views
0

我可以閱讀使用Ruby(v1.9.3-P125)的任何文件,但有麻煩用下面的命令:如何讀取.rb文件的內容?

IO.read("myself.rb") 
File.open("myself.rb","rb") 

當這樣一個「* .RB」的文件,它會返回一個空字符串。如果我將文件重命名爲「myself.rabit」,它就可以工作。

如何解決ruby源文件的表觀過濾問題?

+0

@meagar讓它成爲答案! –

+0

糟糕...我意識到.rb文件在寫入後仍然是打開的。在閱讀之前關閉文件有助於! –

+0

另外,我自己是一個錯誤的名詞,它實際上與腳本的文件名不一樣 –

回答

2

沒有這樣的過濾,你沒有遇到你認爲你遇到的錯誤。

舉例來說,這只是正常存儲在一個文件.rb一個完整的Ruby程序:

puts File.open(__FILE__).read 
+0

標記爲「錯誤的錯誤」指針正確....一定要關閉文件! –

0

你已經得到了正確的答案:使用__FILE__

當您想要讀取主文件時,還有另一種可能性。

請看下面的代碼:

p DATA 
p DATA.pos 
p DATA.read 

__END__ 
This is text after __END__ 

當你執行它,你就會得到

#<File:test.rb> 
50 
"This is text after __END__" 

DATA是一個文件句柄,定位腳本(__END__)結束後 - 在我的例子它是位置50.

我經常用這個DATA來存儲數據在'here-document'中。

您可以使用這種可能性,只需將位置設置爲文件開始。

DATA.pos= 0 
puts DATA.read 

兩個限制:

  • 它僅適用於主文件,不與任何文件。
  • __END__是強制性的。