2012-10-29 71 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__是强制性的。