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 回答