2011-11-30 24 views
13

比方說,我的assets/www目錄(位於index.html旁邊)中有一個名爲foo.html的文件(非常舒適)。訪問資產/ www目錄中的文件

我想將該文件複製到設備上的其他位置。我的第一個方法window.resolveLocalFileSystemURI("foo.html", cool(), notCool());不起作用。還有像www這樣的前綴,它不會。

知道它是否真的有可能通過Phonegap訪問文件會很有趣。我不確定,因此希望看到代碼片段,如果可能的話,如何獲取資產目錄中的文件的FileEntry。

編輯: 好了,現在我們已經有了一個這樣調用

window.resolveLocalFileSystemURI("file:///android_asset", 
    function(entry){ 
    console.log(entry.fullPath);}, 
    function(evt){ 
    console.log(evt.code);} 
); 

但我們得到一個錯誤與code: undefined(PhoneGap的V1.2)和code: 1與V1.0(代碼1 =文件沒有找到?)

回答

10

您應該能夠訪問該文件是這樣的:

window.resolveLocalFileSystemURI("file:///android_asset/www/foo.html", onResolveSuccess, onFail); 

然後,您可以使用File API - FileEntr y.copyTo或FileEntry.moveTo實際執行操作。注意 - 您實際上不能寫入assset/www文件夾,只能寫入SD卡。

希望這有助於

+1

它看起來很好,但它不工作:C始終調用失敗方法。即使我嘗試訪問script.js文件,而不是我的虛擬html。另外我已經仔細檢查了目錄。錯誤事件只有1個字段,即代碼:undefined。 – yoshi

+1

什麼在你的logcat輸出? – Leon

+0

記錄錯誤事件只顯示一個字段: 'code:undefined' – yoshi

1

萊昂 - 「你不能真正寫入到assset/WWW文件夾,只有到SD卡」的第一部分是真實的,你不能寫入資產/ WWW路徑。但是,如果應用程序安裝在設備上,則可以創建並寫入文件,並在android的根目錄下創建該文件。如果應用程序安裝在SD卡上,則該文件將在SD卡的根目錄中創建。因此創建的文件在清除應用程序的用戶數據時不會被刪除或更改,並且在刪除應用程序時不會被刪除。

14

你不能做你想做的事情。資產目錄中的文件在技術上不在文件系統中,因此無法通過File API進行訪問。這意味着調用window.resolveLocalFileSystemURI()不會返回給你一個FileEntry。

你可以希望得到的最好的就是通過XHR訪問這些文件。如果它們是基於文本的,則可以始終使用XHR的結果並使用FileWriter將其寫入文件系統。我寫了一篇博客文章,展示瞭如何使用XHR從資產目錄中獲取文件。

http://simonmacdonald.blogspot.com/2011/12/on-fourth-day-of-phonegapping-creating.html

+0

我目前沒有代碼,但我幾乎已經實現了我需要接受的答案。無論如何,很高興「見面」你西蒙,我已經閱讀了很多帖子,你在phonegap組:) :) – yoshi

+0

@yoshi,對不起,但你是否能夠使用萊昂的答案訪問資產文件?甚至可以走向他們的道路?我試圖讓它工作,但我不能! – lao

+0

lucaskoala - 你能夠得到它的工作?我沒有任何運氣(我認爲西蒙是正確的,這是不可能的)。看到這裏:http://stackoverflow.com/questions/22948430 –