Cordova File Plugin创建的文件的位置在哪里?

Asi*_*ian 25 android phonegap-plugins cordova cordova-plugins

我使用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);
   });
});
Run Code Online (Sandbox Code Playgroud)

当我在Android手机上部署应用程序时,该文件将成功创建,但我无法在我的设备上找到创建的文件.

虽然cordova.file.dataDirectory指向 file:///data/data/io.cordova.myappId/files/我设备io.cordova.myappId上的data>data路径,但该Android>data路径中不存在该文件夹,但存在于路径中.顺便说一句,我查都storage>Android>data>io.Cordova.myappId>filesstorage>data>data该文件不存在.

这是因为:

创建的文件位于另一个地方,那么我在哪里可以找到它?

要么

因为它是私有的,我的文件管理器无法访问它,所以如何更改权限设置以获得公共文件?

Asi*_*ian 36

为什么我在设备上找不到该文件?

该文件已成功创建,但我在我的设备上找不到,因为dataDirectory我指示创建文件的路径是私有路径,而我的设备文件管理器无法访问它(基于此表).实际上dataDirectory是一个Internal Storage选择.

内部存储:将私有数据存储在设备内存中.

您可以将文件直接保存在设备的内部存储中.默认情况下,保存到内部存储的文件对应用程序是私有的,而其他应用程序无法访问它们(用户也无法访问).当用户卸载您的应用程序时,将删除这些文件.(参考)

如何创建公共文件?

因此,要在我的设备上创建一个可以使用文件管理器访问它的文件,我必须使用以下公共路径选项之一:externalDataDirectory.以前,我以为它是用于存储我手机上没有的外部SD卡上的文件,所以我没有测试它.但是今天进行测试,它会在我的内部设备存储上创建文件,该文件Android/data/<app-id>/files是公共的,我可以使用设备文件管理器访问它.

实际上,术语internalexternal被误导我,而external storage可以是一个可移动存储介质(例如,SD卡)或内部(不可移动)存储器(参照).

  • @ Aish123我没有你的代码所以我不能告诉你是否错过了什么.只是可以告诉你这将工作:window.resolveLocalFileSystemURL(cordova.file.externalDataDirectory,function(dirEntry){dirEntry.getDirectory(dirName,{create:true},function(dirEntry){dirEntry.getFile(fileName,{create:true },function(fileEntry){alert("创建文件:"+ fileEntry.name +','+ fileEntry.fullPath);});},errorHandler)},errorHandler); (2认同)