2016-02-28 4 views
2

Я пытаюсь напечатать некоторые вещи в файл из программы Rascal. Поэтому я создаю местоположение из рабочего каталога, используя что-то вроде | cwd: /// myFile |.Распечатать полный путь к удалению

Однако я не смог найти файл, поэтому попробовал напечатать этот путь. Но все, что я получаю, такое же, как и то, что я положил в место. Поэтому я до сих пор не знаю, каков будет фактический путь.

Как получить фактический путь, на который указывает местоположение файла или папки?

Что-то вроде этого:

loc fileLoc = |cwd:///myFile.txt|; 
writeFile(fileLoc, veryInterestingDataThatIsTooLargeForConsole); 
println(Your file is saved here:); 
loc actualFileLoc = getActualFileLoc(fileLoc); 
println(actualFileLoc); 
+0

Или может использовать имя, которое делает что-то значат для вас, как 'дома: ///myFile.txt' для файла в вашем личном каталоге или 'tmp: /// myFile.txt' для файла во временной папке операционной системы. – jurgenv

ответ

1

Вы можете использовать функцию resolveLocation в IO библиотеке:

rascal>loc fileLoc = |cwd:///myFile.txt|; 
loc: |cwd:///myFile.txt| 
rascal>import IO; 
ok 
rascal>resolveLocation(fileLoc); 
loc: |file:///Users/mhills/Development/eclipse.versions/eclipse.45.rcp/Eclipse.app/Contents/MacOS/myFile.txt| 
+0

Обратите внимание, что это будет работать для определенных схем URI, но не для всех. Например, для 'project' вы просто вернете исходное местоположение. Для 'home' и' cwd' это работает, потому что они определены в терминах локальной файловой системы. – jurgenv