8

私はとても初心者です。ファイルの読み書きを学びたいのですが。これが私が試していることです。

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

残念ながら、これは「C:/directoriesblahblah/ubuntu3.rb:1:in'initialize':そのようなファイルまたはディレクトリはありません-bhaarat.txt(Errno :: ENOENT)」を返します。

私は解決策を見つけましたが、Rubyに慣れていないだけでなく、プログラミング全般にも慣れていないため、それらから意味のある答えを得ることができませんでした。

前もって感謝します!

4

4 に答える 4

15

現在のファイルへのパスを取得するには、次を使用できます。

__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+')
于 2012-10-11T04:23:44.250 に答える
2

ファイルは、スクリプトが配置されているディレクトリではなく、現在のディレクトリで検索されます。

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

最初にファイルの場所に移動してから、スクリプトを実行します。たとえば、ファイルがスクリプトと同じディレクトリにある場合:

C:\> cd scripts
C:\scripts> ruby ubuntu3.rb
于 2012-10-11T04:31:28.710 に答える
1

トリックを行ったものを見つけました。もう少し一生懸命検索して、これを見つけまし

元のコードを変更しました

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

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

これにより、コマンドプロンプトが現在あるディレクトリではなく、.rb ファイルのディレクトリに表示されます。

于 2012-10-11T04:32:39.953 に答える