2012-10-11 94 views
5

我非常喜欢初学者。我想学习读取和写入文件。这是我正在尝试的。如何从同一个目录中的文件读取?

rdfile = File.open('bhaarat.txt', 'r+') 

不幸的是,这回“C:/directoriesblahblah/ubuntu3.rb:1: '初始化':没有这样的文件或目录 - bhaarat.txt(错误:: ENOENT)

我有找到解决方案,但我不仅新Ruby,但新的总体规划,所以我不能获取对我有意义了这些的答案。

提前感谢!

+2

您可以发布您的解决方案吗? –

回答

9

要获得路径当前文件,您可以使用:

__FILE__ 

为了获得在当前文件所在的目录,你可以使用:

File.dirname(__FILE__) 

要创建的字符串的路径,你可以使用:

File.join('part1', 'part2', ...) 

因此,创建在该目录中的文件路径,您可以使用:

File.join(File.dirname(__FILE__), 'filename') 

如果您的文件Ë名字是bhaarat.txt,以上变为:

File.join(File.dirname(__FILE__), 'bhaarat.txt') 

如果更换,在你的代码,你会得到:

rdfile = File.open(File.join(File.dirname(__FILE__), 'bhaarat.txt'), 'r+') 

您也可以使这是一个独立的变量,如果你想,做代码更易读:

path = File.join(File.dirname(__FILE__), 'bhaarat.txt') 
rdfile = File.open(path, 'r+') 
+0

+1,非常详细的回答 –

+0

我打印Dir.pwd,它正在搜索错误的目录!所以我想一个人需要确保它是第一个正确的目录。谢谢你的帮助! – vheissu

+0

加入Dir.pwd实际上是无用的,默认情况下路径相对于它。 –

2

在当前目录中搜索文件,而不是脚本所在的目录。

C:\> ruby scripts\ubuntu3.rb 
No such file or directory - bhaarat.txt 

先移到文件位置,然后运行脚本。例如,如果文件位于与脚本相同的目录中:

C:\> cd scripts 
C:\scripts> ruby ubuntu3.rb 
1

找到了一些可以做到的事。搜索有点困难,发现this

我改变了我的原代码

rdfile = File.open('bhaarat.txt', 'r+') 

rdfile = File.open(File.join(File.dirname(__FILE__),'bhaarat.txt'), 'r+') 

,这使得它看起来在你的.rb文件的目录,而不是目录您的命令提示符当前处于。

+1

不过,更喜欢使用'File.join'而不是'+'/ ...'',因为'File.join'会为您使用的操作系统创建正确的路径。例如,在Windows中,路径看起来像'C:\ ... \ file.txt',而在Linux上它看起来像'/ home /.../ file.txt'。 – rid

+0

谢谢radu!我改变了我的解决方案以符合您的建议。 – vheissu

相关问题