概要

  • openFileInput・openFileOutputを使用して、ファイルに対して読み書きを行います。
このAPIは、Contextクラスにより提供されています(ActivityクラスはContextを継承)。
public abstract class Context {
  public abstract FileInputStream openFileInput(String name);
  public abstract FileOutputStream openFileOutput(String name, int mode);
}
  • アプリケーションのデータ保存領域は、次のディレクトリになります。
/data/data/[package name]/files/
  • ファイル名に、セパレータ文字(/)が含まれていると、IllegalArgumentExceptionでcontains a path separatorのエラーが発生します。

ファイルへの書き込み

  • openFileOutput(String name, int mode)を実行し、FileOutputStreamのインスタンスを生成します。
    • 第1引数: ファイル名
    • 第2引数: ファイル作成モード(通常は、MODE_PRIVATEを使用)
モード用途
MODE_PRIVATEこのアプリからのみ使用可能なモード
MODE_APPEND追記モード
MODE_WORLD_READABLE他のアプリケーションからも読み込み可能なモード
MODE_WORLD_WRITEABLE他のアプリケーションからも書き込み可能なモード

文字データの書き込み

public class SampleActivity extends Activity {
    private String fileName = "sample.txt";

@Override 
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    try {
        // ストリームを開く
        FileOutputStream output = openFileOutput(fileName, MODE_PRIVATE);
        // 書き込み
        output.write(str.getBytes());
        // ストリームを閉じる
        output.close();
    } catch (IOException e) {
        e.printStackTrace();
    }  
}
}

画像データの書き込み

public class MainActivity extends Activity {

        /** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.sample);
		try {
			OutputStream out = openFileOutput("hoge.png", MODE_PRIVATE);
			bm.compress(Bitmap.CompressFormat.PNG, 100, out);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
}
boolean Bimap.compress(Bitmap.CompressFormat format, int quality, OutputStream stream)
引数説明
formatBitmap.CompressFormat.JPEGまたはBitmap.CompressFormat.PNG
quality0から100の値を指定(普通は100?)
stream圧縮したビットストリームを流し込む先を指定

ファイルからの読み込み

文字データファイルの読み込み

ファイル(sample.txt)を読み出し, テキストビューに表示する。
public class SampleActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    TextView text = (TextView)findViewById(R.id.textview_id);
    BufferedReader in = null;
    try {
      FileInputStream file = openFileInput("sample.txt");
      in = new BufferedReader(new InputStreamReader(file));
      text.setText(in.readLine());
      in.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}
FileInputStream
「read()メソッド」は、呼び出される度にファイルや・ネットワークにアクセスするため、効率がよくありません。
BufferedInputStream
バッファ機能を持つ入力ストリームで、一度のアクセスで多くのデータをバッファに格納することによって、処理効率が良い。

ローカル画像データの読み込み

public class Main2Activity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		ImageView imageView = (ImageView) findViewById(R.id.image);

		Bitmap bm = null;
		try {
			FileInputStream in = openFileInput("hoge.png");
			BufferedInputStream binput = new BufferedInputStream(in);
			ByteArrayOutputStream out = new ByteArrayOutputStream();
			byte[] w = new byte[1024];
			while (binput.read(w) >= 0) {
				out.write(w, 0, 1024);
			}
			byte[] byteData = out.toByteArray();
			bm = BitmapFactory.decodeByteArray(byteData, 0, byteData.length);
			in.close();
			binput.close();
			out.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		imageView.setImageBitmap(bm);
	}
}

URL上の画像データ読み込み

参考までに、ネットワークから画像ファイルを取得するサンプルです。
DefaultHttpClient client = new DefaultHttpClient();
httpResponse = client.execute(new HttpGet(url));  
  
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {  
  httpEntity = httpResponse.getEntity();  
  final InputStream in = httpEntity.getContent();  
  
  Bitmap bm = BitmapFactory.decodeStream(in);  
  imageView.setImageBitmap(bm);           
}  

このページへのコメント

c7Ey3W Thanks for sharing, this is a fantastic post.Thanks Again. Really Cool.

0
Posted by stunning seo guys 2014年01月22日(水) 22:38:46 返信

vetting nobunaga trimaran

0
Posted by your 2013年10月03日(木) 06:25:28
http://download.pioneer.djs.1.0.softwarenvm.com
返信

Fa4b1j <a href="http://kjakkuabeyce.com/">kjakkuabeyce</a>, [url=http://itnkfwzqimtj.com/]itnkfwzqimtj[/url], [link=http://fsdybjdtvnvv.com/]fsdybjdtvnvv[/link], http://mkypdkpiqebn.com/

0
Posted by oqwuvqxeeq 2013年09月21日(土) 17:30:44
http://atyhvegtgdug.com/
返信

LCTqlZ <a href="http://jmocjyfhlytc.com/">jmocjyfhlytc</a>, [url=http://plgrkcizikkn.com/]plgrkcizikkn[/url], [link=http://zemwmaxwjzlc.com/]zemwmaxwjzlc[/link], http://rxytmtvvjhig.com/

0
Posted by ueryovqqgz 2013年07月06日(土) 07:51:22
http://xbuxjaiokccy.com/
返信

kampala trustworthiness tid

0
Posted by newnaturalpills 2013年06月26日(水) 06:41:09
http://newnaturalpills.com
返信

コメントをかく


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

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

管理人/副管理人のみ編集できます