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
の両方をチェックしましたが、ファイルは存在しません。
これは次の理由によるものです。
作成されたファイルは別の場所にあるので、どこで見つけることができますか?
または
プライベートであり、ファイルマネージャーがアクセスできないため、パブリックファイルを持つようにアクセス許可の設定を変更するにはどうすればよいですか?
デバイス上でファイルが見つからないのはなぜですか?
ファイルは正常に作成されましたが、ファイルを作成するように指定するdataDirectory
パスはプライベートパスであり、デバイスファイルマネージャーはアクセスできません(ベースon この表 )。実際、dataDirectory
はInternal Storage
オプションです。
内部ストレージ:デバイスメモリにプライベートデータを保存します。
デバイスの内部ストレージにファイルを直接保存できます。デフォルトでは、内部ストレージに保存されたファイルはアプリケーション専用であり、他のアプリケーションはそれらにアクセスできません(ユーザーもアクセスできません)。ユーザーがアプリケーションをアンインストールすると、これらのファイルは削除されます。( reference )
パブリックファイルを作成する方法は?
そのため、ファイルマネージャーを使用してアクセスできるデバイス上にファイルを作成するには、externalDataDirectory
などのパブリックパスオプションのいずれかを使用する必要があります。以前は、携帯電話にはなかった外部SDカードにファイルを保存するためだと思っていたので、テストしませんでした。しかし、今日それをテストすると、Android/data/<app-id>/files
パスの内部デバイスストレージにファイルが作成されます。このパスは、デバイスファイルマネージャーを使用してアクセスできます。
実際、用語internal
およびexternal
は私にとって誤解を招くものでしたが、external storage
はリムーバブルストレージメディア(SDカードなど)または内部(リムーバブルでない)ストレージ(- 参照 )。