2010-09-08 19 views
2

我需要導航相對於我的applicationDirectory一個文件,但外界相對路徑,因爲它說的文件中:解決標準目錄(applicationDirectory,desktopDirectory等)

否「..」到達文件系統根目錄或應用程序永久存儲根目錄通過該節點;它被忽略。

但最不可思議的是,如果我這樣做

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

我可以在文件系統中的任何地方。

我的問題是: 是否有解決方法,從我的applicationDirectory導航到像「../../my.cfg」這樣的相對路徑? (我需要讀取由不同應用程序生成的配置文件)

回答

4

如果您嘗試訪問超級用戶權限的文件夾 - 比您不能。

在其他情況下,請嘗試下一步「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可以幫助我。無論如何謝謝你!閱讀別人的意見總是很好的! – 2010-09-10 12:39:34

+0

我的意思是,一些另外的建築,如:** getApplicationPath()+「../../」+ url2file ** – Eugene 2010-09-10 15:33:29

+2

哇,我對解決方案的解決方案感到震驚,爲什麼他們甚至會把這個限制? !我做了一些像var baseDir:File.applicationDirectory.resolvePath(「。」);它給了我當前的道路。然後我做了var newPath:File = File.applicationDirectory.resolvePath(baseDir.nativePath +「/../../」);它神奇地上升,忽略了文檔中寫的東西。等等。謝謝! – 2010-09-14 09:00:09

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