[Android] アプリ内にファイルを保存する FileOutputStream, FileInputStream

internal storage 02 - [Android] アプリ内にファイルを保存する FileOutputStream, FileInputStream
ファイルをアプリのローカルストレージに保存したり読み出したい場合は、FileOutputStream、 FileInputStreamを使うと簡単です。

Android Studio 3.5.3
API 29

 



FileOutputStream , FileInputStream

 
ストレージ オプション | Android Developers に説明がありますが、ストレージには「内部」ストレージと「外部」ストレージがあります。ここではこの内部ストレージにデータを保存させることが目的です。

storage 01 - [Android] アプリ内にファイルを保存する FileOutputStream, FileInputStream

  • 内部ストレージ: Internal Storage
    • 常に使用できる
    • ここに保存されたファイルは、自分のアプリからのみアクセスできる
    • ユーザーがアプリをアンインストールすると、システムは内部ストレージから当該アプリのファイルをすべて削除
    • ユーザーからも他のアプリからも、自分のファイルにアクセスできないようにしたい場合の適する
  • 外部ストレージ:External Storage
    • 使用可能状態か確認が必要
    • 誰でも読み取り可能なため、ここに保存されたファイルは自分のコントロールの及ばない所で読み取られる可能性がある

Ref:ファイルを保存する | Android Developers
 
 

 

FileOutputStream

 
ファイル保存では FileOutputStream のインスタンスを openFileOutput()メソッドで取得します。

第一引数はファイル名のみの指定です。
実際の保存場所は /data/data/package_name/files/ 以下にあります。adb shell コマンドではセキュリティーでブロックされて見えませんが、run-as を使えば見ることはできます
 
第二引数のモードは

  • MODE_APPEND
    • 追加で書き込み
  • MODE_PRIVATE
    • このアプリのみアクセス許可

書き込みは write()メソッドを使います。

strは書き込む文字列です。

 

FileInputStream

 
読み出しでは
FileInputStream のインスタンスを openFileInput()メソッドで取得します。

 
InputStreamReaderでバイトを読み込み、指定された文字にデコードし、それをBufferedReaderに入れて、行毎に読み出します。変換効率を上げるため、BufferedReaderの内部にInputStreamReaderをラップするのがいいようです。

 

サンプルコード

 
下の例は、 EditText で入力した文字列を test.txt というファイルに入れて保存し、そのファイルから読み出す例です。

またtry〜catchをつかう場合にtry-with-resources 文を使いました。
 
MainActivity.java

 
レイアウト
activity_main.xml

 
リソースファイル
strings.xml

 

これで実行します。

internal storage 01b - [Android] アプリ内にファイルを保存する FileOutputStream, FileInputStream

一連の動作を確認してみます。

 
実際に保存したファイルを確認するときは
Android Studio 3.0から
Device File Explorer
を使うと確認できます。昔はADMと呼ばれていました、もっと昔にはDDMSと呼ばれていましたね…
Android Device Monitor, DDMS で確認

/data/data/[package_name]/files/以下に test.txt を作るようにコーディングしたつもりですが、ありました。クリックすると中身も見えて保存した内容が確認できました。

fileoutputstream 02 - [Android] アプリ内にファイルを保存する FileOutputStream, FileInputStream
 
実機では
run-as [package name] をコマンドで打ち込んで確認できます
adb, run-as でローカルストレージ内をのぞく
 
 
関連記事:

 
References:
Context | Android Developers
View On-Device Files with Device File Explorer | Android Studio
ストレージ オプション | Android Developers
ファイルを保存する | Android Developers

誤字脱字、意味不明で分からにゃイ、
などのご意見はこちらから mailフォーム

ブックマークしておくと便利です このエントリーをはてなブックマークに追加

 

アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう。

オンラインスクールは色々ありますが、以下の3つはAndroidが学習できる老舗スクールです。


TECH ACADEMY
Androidアプリコース


こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン


とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約8,000名の受講生と80社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。


無料で転職まで
これはアプリ限定ではありませんが無料です
その代わり就職することを前提にしたスクールでエンジニアになって職を得たいのであれば手っ取り早いかもしれません




シェアする

  • このエントリーをはてなブックマークに追加

フォローする