相对文件路径

时间:2009-04-16 18:30:54

标签: windows ruby file-io exe shoes

我正在尝试使用类似这样的文件从一些文件中读取

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

从命令行运行时它工作正常,但是当我用鞋子打包到.exe并运行它时找不到该文件。有没有办法指定相对于.exe的路径,还是必须提供完整的文件路径(例如“c:\ files \ TeamFields.txt”)?谢谢你的帮助。

4 个答案:

答案 0 :(得分:2)

这是因为您的可执行文件不能使用正确的当前目录运行。

修复当前目录(例如在快捷方式中)或修改Ruby程序以自动将工作目录设置为程序目录:

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

答案 1 :(得分:1)

您需要在走向亲戚之前正确设置“当前应用程序目录”。 用户可以使用不同的启动目录执行您的应用程序,或者系统可以使用不同的目录调用您的应用程序。

如果有问题的文件位于您应用的文件夹中,您唯一需要做的就是获取该文件夹,并将其设置为最新。

答案 2 :(得分:1)

我不用ruby编程,但是我使用windows编程,而赔率是相对路径将基于.exe文件的位置。

所以,是的,你可能最好传递文件名的完整路径。

答案 3 :(得分:0)

常量__FILE__将包含当前正在执行的文件的完整路径。然后,您可以使用File类的方法去除文件名,为您想要的包中的任何其他文件追加相对路径并解析结果。