Разрешение относительных путей вне стандартных каталогов (applicationDirectory, desktopDirectory и т. Д.) - PullRequest
2 голосов
/ 08 сентября 2010

Мне нужно перейти к файлу относительно моего applicationDirectory, но, как сказано в документации:

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

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

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

, я смогу попасть куда угодно в файловой системе.

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

Ответы [ 2 ]

4 голосов
/ 10 сентября 2010

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

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

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

0 голосов
/ 28 июля 2013

Ранее я использовал небольшой хак, упомянутый в ответе Юджина, для копирования с абсолютного пути:

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);
...