2016-10-24 12 views
3

Я пытаюсь прочитать путь к файлу из файла конфигурации, а затем читать из этого каталога. Я не могу найти способ заставить его работать, потому что по какой-то причине change-dir никогда не переходит в абсолютный путь к файлу. Вот сценарий, в котором я пытаюсь заставить его работать над CLI.Rebol2: Change-dir to absolute filepath не работает

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

ответ

1

Обнаружено эффективное обходное решение.

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

Если у кого-то есть более элегантное решение, я открыт для его слушания!

1

В Rebol, поскольку код - это данные и данные, это код, вы можете представлять ваши .ini-файлы по коду Rebol. Кстати, я и многие другие, не ориентированные на Windows, предпочитают использовать .cfg как расширение для этих типов файлов. .ini относится к «инициализации», которая во многих умах относится к загрузке системы, но также может относиться к запуску программы. .cfg немного более точен в том, что это файл конфигурации для программы.

С учетом сказанного, попробуйте вместо этого:

test.cfg:

test: %/c/users/thompson/downloads 

Затем, вы можете просто сделать это из вашей программы:

>> do %test.cfg 

Это будет автоматически заполнять путь к файлу в слово «тест».

В операционных системах, отличных от Windows, чаще всего путь к файлу начинается с/когда он ссылается на корневой уровень файловой системы. Если он не начинается с /, это относительный путь (начиная с текущего каталога).

Надеюсь, это поможет!

2

Это провал, потому что 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 
2

Есть много способов, как получить абсолютный путь файла 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/

 Смежные вопросы

  • Нет связанных вопросов^_^