【问题标题】:Relative file paths相对文件路径
【发布时间】:2009-04-16 18:30:53
【问题描述】:

我正在尝试使用类似的方法从几个文件中读取

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

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

【问题讨论】:

    标签: windows ruby file-io exe shoes


    【解决方案1】:

    这是因为您的可执行文件没有在正确的当前目录下运行。

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        我不会用 ruby​​ 编程,但我会用 windows 编程,而且相对路径可能会基于 .exe 文件的位置。

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 2011-10-18
            • 2012-01-28
            • 2021-12-02
            • 1970-01-01
            • 1970-01-01
            • 2016-12-11
            • 2018-05-05
            • 2014-07-31
            • 2013-10-29
            相关资源
            最近更新 更多