Относительные пути к файлам - PullRequest
0 голосов
/ 16 апреля 2009

Я пытаюсь прочитать несколько файлов, используя что-то вроде этого

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

Работает нормально при запуске из командной строки, но когда я упаковываю в .exe с помощью shoes и запускаю, он не может найти файл. Есть ли способ указать путь относительно .exe или мне нужно указать полный путь к файлу (например, "c: \ files \ TeamFields.txt")? Спасибо за помощь.

Ответы [ 4 ]

2 голосов
/ 16 апреля 2009

Это потому, что ваш исполняемый файл не запущен с правильным текущим каталогом.

Либо исправьте текущий каталог (например, в ярлыке), либо измените программу Ruby, чтобы автоматически установить рабочий каталог в каталог программы с помощью:

Dir.chdir(File.dirname($PROGRAM_NAME))
1 голос
/ 16 апреля 2009

Я не программирую на ruby, но я работаю с Windows, и, скорее всего, относительный путь будет зависеть от расположения файла .exe.

Так что, да, вам, вероятно, лучше указать полный путь к имени файла.

1 голос
/ 16 апреля 2009

Вам нужно правильно установить «Текущий каталог приложений», прежде чем переходить в относительные значения. Пользователь может запустить ваше приложение с другим каталогом запуска, или система может вызвать ваше приложение с другим каталогом.

Если указанные файлы находятся в папке вашего приложения, единственное, что вам нужно сделать, это получить эту папку и установить ее текущую.

0 голосов
/ 16 апреля 2009

Константа __FILE__ будет содержать полный путь к текущему исполняемому файлу. Затем вы можете использовать методы класса File, чтобы убрать имя файла, добавить относительный путь для любого другого файла в вашем пакете и разрешить результат.

...