2017-04-11 21 views
1

我們正在開發一個android應用程序與科爾多瓦文件將被同步。 Cordova是最新的,但問題是我們的文件保存在主存儲目錄中。科爾多瓦android文件系統困難

文件的URL看起來像: file:///storage/emulated/0/{our_directory}//

一個科爾多瓦更新後,我們被迫設置 <preference name="AndroidPersistentFileLocation" value="Compatibility" />在config.xml中,仍然發現我們的文件。

現在我們真的想將我們的文件放在內部數據目錄中。 因此,如果我們可以刪除config.xml中的「兼容性」設置,那麼所有文件都將不可見。

如果我們改變我們有兩個問題內部數據目錄:

  1. 在我們需要在這兩個目錄訪問一個過渡期(兼容性:file:///storage/emulated/0/{our_directory}//和新的正確的內部數據目錄:file:///data/user/0/{our_app_id}/files/files/{our_directory}//)。 如果我們更改爲內部window.requestFileSystem(LocalFileSystem.PERSISTENT,0,fn)傳遞內部應用程序數據目錄的根目錄。那麼如何讀取或寫入不在此目錄中的文件呢?我發現,cordova.file.externalRootDirectory提供了舊路。有關如何訪問這兩個目錄的任何想法?
  2. 另一件事是,我們可能想要將舊目錄中的所有文件移動到新的正確的內部應用程序數據目錄中。任何想法如何做到這一點?

謝謝!

回答

1

如果你已經知道你要存儲和檢索文件從您可以使用的網址:

window.resolveLocalFileSystemURL(URL,回調);

該回調將通過目錄條目。

要移動文件,您可以使用fileEntry方法moveTo。

entry.moveTo(parentEntry,「newFile.txt」,success,fail);

我知道這個文檔是爲科爾多瓦3.3.0,但我相信它仍然是相關的。

https://cordova.apache.org/docs/en/3.3.0/cordova/file/fileentry/fileentry.html

+1

謝謝,似乎是一個好主意!使用內部設置,我們遇到了另一個問題:外部文件打開插件(如https://github.com/critical/cordova-external-file-open)不起作用,因爲其他應用程序無法訪問內部文件應用數據目錄。你也有解決這個問題的方法嗎? – user1323512

+0

是的,當你有fileEntry的時候,使用我的答案中相同文檔中的file()方法。然後你可以將它傳遞給文件開啓器插件。 –