0

このようなものを使用して、いくつかのファイルから読み込もうとしています

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

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

4

4 に答える 4

2

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

現在のディレクトリ (たとえばショートカット) を修正するか、Ruby プログラムを変更して、次のように作業ディレクトリをプログラム ディレクトリに自動的に設定します。

Dir.chdir(File.dirname($PROGRAM_NAME))
于 2009-04-16T18:45:40.577 に答える
1

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

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

于 2009-04-16T18:38:54.680 に答える
1

私は Ruby でプログラミングしませんが、Windows でプログラミングします。相対パスは .exe ファイルの場所に基づく可能性があります。

したがって、ファイル名のフル パスを渡す方がよいでしょう。

于 2009-04-16T18:39:08.360 に答える
0

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

于 2009-04-16T18:41:39.853 に答える