Относительные пути к файлам

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

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

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


person Community    schedule 16.04.2009    source источник


Ответы (4)


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

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

Dir.chdir(File.dirname($PROGRAM_NAME))
person Vincent Robert    schedule 16.04.2009

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

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

person majkinetor    schedule 16.04.2009

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

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

person Randolpho    schedule 16.04.2009

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

person moonshadow    schedule 16.04.2009