Rebol2: Change-dir到绝对文件路径不起作用



我正试图从配置文件中读取文件路径,然后从该目录中读取。我找不到让它工作的方法,因为出于某种原因,change-dir从来没有到绝对文件路径。以下是我尝试在CLI中使其工作的文字记录。

>> test: pick read/lines %test.ini 1
== "test: C/Users/thompson/Downloads/"
>> test: find test " "
== " C/Users/thompson/Downloads/"
>> test: next test
== "C/Users/thompson/Downloads/"
>> test: to file! test
== %C/Users/thompson/Downloads/
>> change-dir test
** Access Error: Cannot open /C/rscratch/C/Users/thompson/Downloads/
** Near: change-dir test

显示失败,因为Rebol没有看到

%C/Users/thompson/Downloads/

作为绝对路径—它缺少神奇的斜杠,因此被视为相对路径。绝对路径如下:

%/C/Users/thompson/Downloads/

所以很容易修复,如果你确定你没有开始斜杠:

>> test: pick read/lines %test.ini 1
== "test: C/Users/thompson/Downloads/"
>> test: find test " "
== " C/Users/thompson/Downloads/"
>> test: next test
== "C/Users/thompson/Downloads/"
>> test: to file! join "/" test

有很多方法可以获得一个绝对的Rebol文件路径,

Rebol方式

 test: "test: %/C/Users/thompson/Downloads/"
 select load test [test:]

Linux方式

test: "test: /C/Users/thompson/Downloads/"
to-file trim find/tail test "test:"

Windows方式

test: "test: C:/Users/thompson/Downloads/"
to-rebol-file trim find/tail test "test:"

你总是会得到%/C/Users/thompson/Downloads/

找到一个有效的解决方法。

changeDirAbsolute: func [input] [
change-dir %/
change-dir input
]

如果有人有更优雅的解决方案,我愿意听!

在Rebol中,因为代码就是数据,数据就是代码,所以你可以用Rebol代码来表示你的。ini文件。顺便说一句,我和其他许多不以windows为中心的人更喜欢使用.cfg作为这些类型文件的扩展名。.ini指的是"初始化",在许多人心目中指的是系统的引导,但也可以指程序的启动。.cfg更精确一点,因为它是程序的配置文件。

说了这么多,试试这个:

test.cfg:

test: %/c/users/thompson/downloads

然后,您可以简单地在程序中执行此操作:

>> do %test.cfg

这将自动将文件路径填充到单词"test"中。

在非基于windows的操作系统中,当文件路径指向文件系统的根级别时,它通常以/开头。如果它不以/开头,它是一个相对路径(从当前目录开始)。

我希望这对你有帮助!

相关内容

  • 没有找到相关文章

最新更新