1. 自由研究に戻る
  2. Menu表示

ばら苑
2012.05.20 生田緑地、ばら苑

File Access、Data Storage

File Access、Data Storage

File Accessの確認です。
・data fileの保存先
・SD Cardのファイル
・Movie, JPEGの再生
・android ファイル構成
・Data Storage
の確認をしてみます。

下記サイトを参考にしながら動作を確認していきます。
(1)ファイルを読み書きするには
(2)ディレクトリとファイルの作成
(3)Androidでファイルを読み書きする方法
(4)getBytes
(5)ファイルアクセスチュートリアル
(6)「Google androidプログラミング入門」グループ
(7)Android/techfirm_android
(8)Data Storage (android Developers)
(9) android jpg 表示
(10)ファイル一覧の取得(fileList)
(11) Androidでファイル選択ダイアログを使う

File access

■file read/write
FileReader/FileWriter又はFileInputStream/FileOutputStream、またはPrintWriter/BufferedReader使います。
使い方は
・内部フラッシュでは/data/data/パッケージ名/xxxxにしかアクセスできない。(例:/data/data/com.suddenAngerSystem/xxx)
・内部フラッシュは容量が小さい
・パスを意識すべきではない。(Contextクラスのメソッドは"/data/data/パッケージ名"の部分を解決してくれるので、それを使う)

FileOutputStream/FileInuptStreamを使う(参考サイト)
・FileOutputStream 書き込み
  FileOutputStream fileOutputStream = openFileOutput("myfile.txt", MODE_PRIVATE);
  String writeString = "test";
  fileOutputStream.write(writeString.getBytes());
**  ここで"test".getBytes()の戻り値は、"test"文字列をbyte型の配列です。戻り値としての配列の数は、文字数の倍になります。getBytes()メソッドを引数なしで呼び出すと、OSのデフォルトの文字コードに変換して取り出します。

・FileInuptStream 読み込み
  FileInputStream fileInputStream;
  fileInputStream = openFileInput("myfile.txt");
  byte[] readBytes = new byte[fileInputStream.available()];
  fileInputStream.read(readBytes);
  String readString = new String(readBytes);
** 疑問:fileのopen,closeは要らないのでしょうか?

FileReader/FileWriterを使う場合(参考サイト)

PrintWriter/BufferedReader を使う場合(参考サイト)
書き込み
  OutputStream out = openFileOutput(“a.txt”,MODE_PRIVATE);
  PrintWriter writer =new PrintWriter(new OutputStreamWriter(out,”UTF-8″));
  writer.append(s);
  writer.close();
読み込み
  InputStream in = openFileInput(“a.txt”);
  BufferedReader reader =new BufferedReader(new InputStreamReader(in,”UTF-8″));
  String s;
  EditText et = (EditText)findViewById(R.id.edittext01);
  while((s = reader.readLine())!= null){
    et.append(s);
    et.append(“\n”);
  }

■preferenceの場合( 簡単に使えるらしいい
プリファレンスは、データを、キー名と値の組み合わせで保存する形をとります。
■fileListメソッド
filelistの取得です。(参考サイト)

SD Card

■エミュレータ上でのSD card
SDカードへのアクセスも自アプリケーション用のディレクトリへのアクセスと変わらないが、エミュレータ上でSDカードを作成しないと確認できないため、SDカードを作成するにはAndroidのSDKをインストールしたディレクトリの下のtoolsディレクトリで"mksdcard サイズ SDカードイメージファイル名"を実行する。
■実機のSD card

Data Storage

■Shared Preferences
■Internal Storage
■External Storage
■SQLite Databases
■Network Connection

実施例
・フォルダ構成、ファイルリストの表示
・フォルダの作成
・テキストの保存
・テキストの表示
を確認してみます。

参考サイト
沢山ありますがありがとうございました。
もっとまとめようと思いましたが、難しくなりましたのでこの辺で終了します。