C/C++プログラマの管理者が, Androidプログラムにチャレンジ. AndroidプログラミングのTipsをメモっていく予定です.

コンテキスト(Context)クラスのopenFileOutputメソッドからFileOutputStreamインスタンスを取得し, これを利用することでファイルへの文字データまたはバイナリデータをファイルに書き込むことができる.

文字データをファイルに書き込む

入力フィールドに文字列を入力して保存ボタンを押すと, その文字列がファイルに書き込まれる.


    • openFileOutputメソッドの引数に, ファイル名と書き込みモードを指定して, FileOutputStreamインスタンスを取得する.
    • BufferedWiterの内部にOutputStreamWriterをラップしたBufferedWriterオブジェクトを生成する. BufferdWriterを使用しなくてもファイルへの書き込みは行えるが, writeメソッドが呼ばれるたびにファイルにアクセスするので効率がよくない.
    • エディットテキストの文字列をwriteメソッドでファイルに書き込む. (実はバッファにためている)
    • flushメソッドを呼ぶことで, バッファリングされている文字データがファイルに書き込まれる.
    • closeメソッドでクローズする.
package com.moonlight_aska.android.filewrite01;

import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class FileWrite01 extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    final Context context = this;

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button btn = (Button)findViewById(R.id.button_id);
    btn.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        EditText edit = (EditText)findViewById(R.id.edittext_id);
        BufferedWriter out = null;
        try {
          FileOutputStream file = context.openFileOutput("sample.txt", Context.MODE_PRIVATE);
          out = new BufferedWriter(new OutputStreamWriter(file));
          out.write( (edit.getText()).toString() );
          out.flush();
          out.close();
          Log.v("Write", "File write completed.");
        } catch(IOException e) {
          e.printStackTrace();
        }
      }
    });
  }
}

保存ボタンを押すと, /data/data/{app dir}/filesにsample.txtが生成される.


バイナリデータをファイルに書き込む

0〜255までの値をファイルに書き込んでみる.
    • openFileOutputメソッドの引数に, ファイル名と書き込みモードを指定して, FileOutputStreamインスタンスを取得する.
    • BufferedOutputStreamオブジェクトを生成する. BufferedOutputStreamを使用しなくてもファイルへの書き込みは行えるが, writeメソッドが呼ばれるたびにファイルにアクセスするので効率がよくない.
    • writeメソッドで1バイトのデータをファイルに書き込む. (実はバッファにためている)
    • flushメソッドを呼ぶことで, バッファリングされているバイナリデータがファイルに書き込まれる.
    • closeメソッドでクローズする.
package com.moonlight_aska.android.filewrite02;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;

public class FileWrite02 extends Activity {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    Context context = this;

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    BufferedOutputStream out = null;
    try {
      FileOutputStream file = context.openFileOutput("sample.bin", Context.MODE_PRIVATE);
      out = new BufferedOutputStream(file);
      for(int i=0; i<256; i++) {
        out.write((byte)i);
      }
      out.flush();
      file.close();
    } catch(IOException e) {
      e.printStackTrace();
    }
  }
}

プログラムを実行すると, /data/data/{app dir}/filesにsample.binが生成される.

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

AD



管理人のみ編集できます