2010-09-08 2 views
2

мне нужно, чтобы перейти к файлу относительно моего applicationDirectory, но, как говорится в документации:Разрешая относительные пути вне стандартных каталогов (applicationDirectory, desktopDirectory и т.д.)

Нет «..» ссылка, достигает корень файловой системы или корневой корневой каталог приложения, который передает этот узел; он игнорируется.

Но сумасшедшая вещь, что если я делаю что-то вроде

File.applicationDirectory.resolvePath("/home/myHome/"); 

я могу получить в любом месте в файловой системе.

Мой вопрос: есть ли обходной путь для перехода из моего приложения? Справочник по относительному пути, например "../../my.cfg" ?? (Мне нужно прочитать конфигурационный файл, созданный другим приложением)

ответ

4

если вы пытаетесь получить доступ к папкам с привилегиями root, чем вы не можете.

в других случаях попробуйте сделать следующий «home/blah/blah/blah /../../ my.cfg» и провести исследование еще раз http://help.adobe.com/en_US/AIR/1.5/jslr/flash/filesystem/File.html, чтобы сэкономить ваше время на навигации.

также у вас есть несколько способов: создать ссылку на файл или запустить внешний скрипт bash/bat.

+0

, как Я сказал, что моя заявка помещается внутри подпапки другого приложения, поэтому для загрузки основного файла конфигурации мне нужно будет перейти в одну папку с помощью «../../». Но AIR ограничен в этом (не может идти дальше основного приложения AIR), поэтому я либо использую абсолютный путь (например,/home/myHome), либо иначе мне нужно найти обходной путь. Я не могу создать ссылку, и я не знаю, как может помочь использование bash. В любом случае, спасибо! всегда приятно читать мнения других! –

+0

Я был злым, еще одна конструкция вроде: ** getApplicationPath() + "../../" + url2file ** – Eugene

+2

wow, я в шоке от решения обходного пути, почему они даже поставили это ограничение? ! Я сделал что-то вроде var baseDir: File.applicationDirectory.resolvePath ("."); и это дало мне текущий путь. Затем я сделал var newPath: File = File.applicationDirectory.resolvePath (baseDir.nativePath + "/../../"); и он волшебным образом поднялся, игнорируя то, что написано в документации. Мля. Спасибо! –

0

Я был ранее с помощью небольшой хак, упомянутых в ответе Евгения скопировать из абсолютного пути:

var file = 'C:\Users\User1\Pictures\pic.png'; 
var newPath = air.File.applicationStorageDirectory.resolvePath('images/pic.png'); 

air.File.applicationDirectory.resolvePath('/../../../../../../../../../../' + 
    file).copyTo(newPath, true); 

Однако это гораздо лучший способ сделать это:

var file = 'C:\Users\User1\Pictures\pic.png'; 
var newPath = air.File.applicationStorageDirectory.resolvePath('images/pic.png'); 

new air.File(file).copyTo(newPath, true); 
Смежные вопросы