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

时间:2016-01-09 13:38:24

标签: android cordova phonegap-plugins 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);
   });
});

当我在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,该文件不存在。

这是因为:

创建的文件位于其他地方,我在哪里可以找到它?

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

2 个答案:

答案 0 :(得分:31)

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

该文件已成功创建但我在我的设备上找不到该文件,因为我指示创建该文件的dataDirectory路径是私有路径,而我的设备文件管理器无法访问它(基于this table)。实际上dataDirectoryInternal Storage选项。

  

内部存储:将私人数据存储在设备内存中。

     

您可以直接在设备的内部存储上保存文件。通过   默认情况下,保存到内部存储器的文件对您来说是私有的   应用程序和其他应用程序无法访问它们(也不能   用户)。当用户卸载您的应用程序时,这些文件是   除去。(reference

如何创建公共文件?

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

实际上,internalexternal一词对我有误导性,而external storage可以是可移动存储媒体(如SD卡)或内部(不可移动)存储( reference)。

答案 1 :(得分:0)

在Cordova中读取/连接文件很痛苦。我编写了一个使用promise的脚本,以简化此操作。

cordova-file-storage.js添加到您的项目中,然后您可以执行以下操作:

// the object you want to save
var objectToSave = { firstName: 'John', lastName: 'Doherty' };

// the filename and extension you want to use
var filename = 'whatever.txt';

// the data to write (convert JSON object to a string)
var data = JSON.stringify(objectToSave);

// call write with params, .then executes with the filePath once complete
fileStorage.write(filename, data).then(function(filePath) {
     console.log(filePath);
})
.catch(function(err) {
     // this executes if something went wrong
     console.warn(err);
});

默认情况下使用外部存储。要使用用户无法访问的沙盒存储,请将true添加为最后一个参数。