2016-01-09 64 views
16

我用Cordova File Plugin創建在移動設備上的文件。下面是代碼來創建文件:Cordova File Plugin創建的文件的位置在哪裏?

window.resolveLocalFileSystemURL(cordova.file.dataDirectory, function (dir) { 
    alert(cordova.file.dataDirectory); 
    dir.getFile("log.txt", { create: true }, function (file) { 
      alert("got the file: "+ file.name + ', ' + file.fullPath); 
    }); 
}); 

當我部署我的Android手機上的應用程序,該文件將成功創建,但我找不到我的設備上創建的文件。

雖然cordova.file.dataDirectory指着我的設備上file:///data/data/io.cordova.myappId/files/道路,io.cordova.myappId文件夾不data>data路徑存在,但存在於Android>data路徑。順便說一句,我查了一下這兩個storage>Android>data>io.Cordova.myappId>files & storage>data>data和文件不存在。

這是因爲:

創建的文件位於另一個地方,所以我在哪裏可以找到?

因爲它是私有的,我的文件管理器不能訪問它,所以我怎麼能更改權限設置有一個公共文件?

回答

19

爲什麼我找不到我的設備上的文件?

的文件創建成功,但我無法找到我的設備上,因爲dataDirectory路徑,我指示創建的文件,是一個私人的路徑和我的設備文件管理器無法訪問到它(基地在this table)。其實dataDirectory是一個Internal Storage選項。

內部存儲:在設備內存中存儲的私有數據。

您可以直接保存在設備內部存儲器中的文件。通過 默認情況下,保存到內部存儲文件僅對您的 應用程序和其他應用程序不能訪問它們(也可以在 用戶)。當用戶卸載應用程序,這些文件 刪除。(reference

如何創建一個公共文件?

所以,要在我的設備上創建一個文件,我可以使用文件管理器訪問它,我必須使用公共路徑選項之一,如:externalDataDirectory。之前,我認爲這是將文件存儲在外部SD卡上的文件,我沒有在我的手機上,所以我沒有對它進行測試。但今天測試它,它會在Android/data/<app-id>/files路徑上創建我的內部設備存儲上的文件,這是公開的,我可以通過設備文件管理器訪問它。

其實術語internalexternal是誤導我,而external storage可以是可移動存儲介質(如SD卡)或內部(不可移動)存儲(reference)。

+0

嗨@ A.M,我面臨類似的問題。雖然我使用externalDataDirectory,但我無法在設備中找到我的文件。函數getFile返回成功。我是否缺少別的東西。請幫忙。 – AishApp

+0

@ Aish123我沒有你的代碼,所以我不能告訴你是否有遺漏。只是可以告訴你,這將工作:窗口。resolveLocalFileSystemURL(cordova.file.externalDataDirectory,函數(dirEntry){dirEntry.getDirectory(dirName,{create:true},function(dirEntry){dirEntry.getFile(fileName,{create:true},function(fileEntry){alert(「創建文件:「+ fileEntry.name +','+ fileEntry.fullPath);}); },errorHandler) },errorHandler); –

+0

@ Aish123如果您的設備是android或者基於[此表](https://www.npmjs.com/package/cordova-plugin-file#android-file-system-layout)檢查其他r/w路徑根據您的設備操作系統檢查其他表格。 –

相關問題