2009-04-16 15 views
0

私はこの相対ファイルパス

IO.foreach("TeamFields.txt") { |line| fieldNames.push(line.chomp) } 

のようなものを使用して、いくつかのファイルから読み込むしようとしているコマンドラインから実行するときにそれが正常に動作しますが、私は靴と実行して.exeファイルにパッケージ化するときファイルを見つけることができません。ファイルパスを相対パスで指定する方法はありますか?ファイルパス全体を指定する必要がありますか(例: "c:\ files \ TeamFields.txt")?助けてくれてありがとう。

答えて

2

これは、実行可能ファイルが現在の正しいディレクトリで実行されていないためです。

(ショートカットで例えば)カレントディレクトリを修正したり、Rubyのプログラムが自動的にプログラムディレクトリに作業ディレクトリを設定するために変更次のいずれかの

Dir.chdir(File.dirname($PROGRAM_NAME)) 
1

親戚に行く前に、「現在のアプリケーションディレクトリ」を正しく設定する必要があります。 ユーザーは異なる起動ディレクトリでアプリケーションを実行できます。または、システムは別のディレクトリでアプリケーションを呼び出すことができます。

問題のファイルがアプリのフォルダにある場合は、そのフォルダを取得して最新のものにするだけです。

1

私はルビーではプログラムしませんが、私はウィンドウで行い、オッズは相対パスは.exeファイルの場所に基づいています。

だから、はい、ファイル名のフルパスを渡す方がよいでしょう。

0

定数__FILE__には、現在実行中のファイルへのフルパスが含まれます。次に、Fileクラスのメソッドを使用してファイル名を取り除き、パッケージ内の他のファイルの相対パスを追加して結果を解決します。