Androidでファイル操作をする簡単な方法は、ActivityクラスのopenFileOutput/openFileInputメソッドを使うことです。
これらのメソッドを使うと、Androidの方で自動的にアプリごとに設定された領域にファイルを生成してくれるので楽ちんなわけですね。
で、そのAndroidの方で自動的にアプリごとに設定された領域というのが以下のパスになります。
/data/data/パッケージ名/files
このパスにopenFileOutput/openFileInputメソッドで指定するファイル名のファイルが作成され、読み込みされます。
Android Device Monitor で確認
どんなファイルができているか確認するには、Android Device Monitorというツールを使うといいでしょう。
Android Device Monitorは、
Android sdkのパス/tools/monitor
にあります。
起動して、「File Explorer」というタブに行くと、Androidのディレクトリが丸見えです。
ただ、Android実機でopenFileOutput/openFileInputメソッドを使ってファイルを作成した場合、Android Device Monitorツールでは /data 以下が見えないので、ファイルができてるのかよくわかりません。
Permissionの影響ですかね。
これは自動的に設定されるので仕方がないです。
こんなときは、コマンドラインからシェルを使って見に行くことができます。
Unixコマンドが普通に使える人であれば、簡単に使えると思います。
adb shell
Android実機をMacにUSB接続した状態で、「ターミナル」を起動して、次のコマンドを打ちます。
adb shell
なお、ここで使う「adb」のあるパスはこちらになります。
Android sdkのパス/platform-tools/adb
このパスに移動してから「adb shell」を実行してくださいね。
run-as アプリのパッケージ名
特にエラーなどなさそうなら、次のコマンドを打ちます。
run-as アプリのパッケージ名
アプリごとに自動的に設定される領域なので、アプリのパッケージ名を指定するだけで当該領域が確認できるのでしょう。
エラーなどなさそうなら、「/data/data/パッケージ名」がカレントディレクトリになっていますので、
cat files/作成したファイル名
でファイルの中身を見ることができます。
「ls」も使えますので、どんなファイルができているのか確認してもいいでしょう。
ちょっとわかりづらいかもしれませんが、こんな感じで確認できますよ、というスクリーンショットを貼っておきます。
おわりに
Android実機でファイル作成してみたところ、Android Device Monitorではファイルが作られているのかよくわからなくて、ちょっとハマっちゃいました (^^;
おそらく /data のPermissionが影響していると思うのですが・・・
コマンドラインでAndroid実機に突入したら普通に見えました。
ちゃんとファイルができていて、内容が書き込まれていることが確認できました。
ちょっと手間がかかりますが、ちゃんとファイルができていることがわかったらOKでしょう。
なお、「SQLiteOpenHelper」でDBファイルを作ったときも同じパスにファイルが作られますので、こちらで紹介した方法でファイルの存在を確認することができます。
元大手電機メーカのシステムエンジニア。
詳しくはこのサイトについての「サイト管理者について」をご覧ください。