web-dev-qa-db-ja.com

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>filesstorage>data>dataの両方をチェックしましたが、ファイルは存在しません。

これは次の理由によるものです。

作成されたファイルは別の場所にあるので、どこで見つけることができますか?

または

プライベートであり、ファイルマネージャーがアクセスできないため、パブリックファイルを持つようにアクセス許可の設定を変更するにはどうすればよいですか?

24
Asieh Mokarian

デバイス上でファイルが見つからないのはなぜですか?

ファイルは正常に作成されましたが、ファイルを作成するように指定するdataDirectoryパスはプライベートパスであり、デバイスファイルマネージャーはアクセスできません(ベースon この表 )。実際、dataDirectoryInternal Storageオプションです。

内部ストレージ:デバイスメモリにプライベートデータを保存します。

デバイスの内部ストレージにファイルを直接保存できます。デフォルトでは、内部ストレージに保存されたファイルはアプリケーション専用であり、他のアプリケーションはそれらにアクセスできません(ユーザーもアクセスできません)。ユーザーがアプリケーションをアンインストールすると、これらのファイルは削除されます。( reference

パブリックファイルを作成する方法は?

そのため、ファイルマネージャーを使用してアクセスできるデバイス上にファイルを作成するには、externalDataDirectoryなどのパブリックパスオプションのいずれかを使用する必要があります。以前は、携帯電話にはなかった外部SDカードにファイルを保存するためだと思っていたので、テストしませんでした。しかし、今日それをテストすると、Android/data/<app-id>/filesパスの内部デバイスストレージにファイルが作成されます。このパスは、デバイスファイルマネージャーを使用してアクセスできます。

実際、用語internalおよびexternalは私にとって誤解を招くものでしたが、external storageはリムーバブルストレージメディア(SDカードなど)または内部(リムーバブルでない)ストレージ(- 参照 )。

35
Asieh Mokarian