2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

(書きかけの記事)Androidでファイル入出力

Last updated at Posted at 2018-11-10

#この記事の概要
Androidでファイル入出力する方法について自分用にまとめます。

#基本

##Javaのファイル入出力の流れ
1.パスとファイル名を指定してFileインスタンスを生成します。
2.Fileインスタンスを引数にしてFileReader/FileWriterインスタンスを生成します。
 文字列を上書きするか追記するかを指定することができる。
  FileWriterのコンストラクタの第二引数に
   trueを指定・・・「追記」
   falseを指定・・・「上書き」
3.FileReader/FileWriterインスタンスを引数にBufferedReader/BufferedWriterインスタンスを生成します。
4.BufferedReaderインスタンスのreadLine()メソッドで文字列を読み込みます。
BufferedWriterインスタンスのwrite()メソッドで文字列をファイルに書き込みます。
(すぐに書き込まれない可能性があるのでflush()メソッドを読んでおくと良い)
5.読み込み/書き込み終わったらclose()メソッドでファイルを閉じます。

##Androidのファイル入出力の流れ
基本的にはJavaのファイル入出力の流れと同じですが、項番1と2が異なります。

  • ファイルオープンがFileクラスのコンストラクタではなく、ContextのopenFileOutput()メソッド、openFileInput()メソッドになります。
  • 2がFileWriterではなく、OutputStreamWriterになる。

1.ファイル名を指定して上記のファイルオープンメソッド(openFileOutput()/openFileInput())を呼びます。
2.1で取得したFileInputStream/FileOutputStreamインスタンスを引数にしてInputStreamReader/OutputStreamWriterのインスタンスを生成します。
3.InputStreamReader/OutputStreamWriterインスタンスを引数にBufferedReader/BufferedWriterインスタンスを生成します。
4.BufferedReaderインスタンスのreadLine()メソッドで文字列を読み込みます。
BufferedWriterインスタンスのwrite()メソッドで文字列をファイルに書き込みます。
(すぐに書き込まれない可能性があるのでflush()メソッドを読んでおくと良い)
5.読み込み/書き込み終わったらclose()メソッドでファイルを閉じます。

読込サンプル
// FileInputStreamクラスはInputStreamクラスを継承しているため、InputStreamクラスで受け取るのが普通かも?
FileInputStream fileInputStream = openFileInput("FileOutputStream.txt");
bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream, "UTF-8"));
String lineBuffer = bufferedReader.readLine();
// 読込できた場合はメモリに保持する
while (lineBuffer != null) {
    stringBuilder.append(lineBuffer);
    // 次の行があれば、改行コードを挿入
    if ((lineBuffer = bufferedReader.readLine()) != null) {
        stringBuilder.append(BR);
    }
}

ファイル出力

###ファイル出力の種類

  • Android標準
  • Java標準
    • FileWriter
    • BufferedWriter
      • FileWriterの拡張クラス
        • 特徴
          • newLine()メソッド・・・プログラムを実行している環境にあった改行コードを生成してくれる。
          • close()メソッド・・・BufferedWriterでクローズし、FileWriterではクローズしない。
    • PrintWriter
      • BufferedWriterの拡張クラス
        • 特徴
          • print()メソッド・・・write()メソッドは文字列しか引数に指定できないので、自前でString型に変換する必要があるが、print()メソッドはint型やboolean型の値も引数に指定することができる。
          • println()メソッド・・・print()メソッドの改行あり版(改行コードは環境に合わせた物を使用してくれる)
          • close()メソッド・・・PrintWriterでクローズし、BufferedWriterやFileWriterではクローズしない。

ファイル読込

###ファイル読込の種類

  • Android標準
  • Java標準
    • FileReader
      • 特徴
        • read()メソッド・・・一文字ずつ読み込むため、普段使用することはない...。
    • BufferedReader
      • FileReaderの拡張クラス
        • 特徴
          • read()メソッド・・・一文字ずつ読み込む。
          • readLine()メソッド・・・一行ずつ読み込む。
          • close()メソッド・・・BufferedReaderでクローズし、FileReaderではクローズしない。
2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?