''[[MobileApp>Mobile Application 入門]]'' > ''[[Android>Android]]'' > ''File Access''



~
*ファイルアクセスの方法 [#f2010d23]
**ファイルアクセスの概要 [#wa3e707d]
  Androidではjava.ioパッケージの標準ioが使用できる。ので、特に難しくない~
  ・テキストファイルを読み書きする場合は、FileReader() / FileWriter()~
  ・そうでない場合は、FileInputStream() / FileOutputStream()を使う。

~

**ファイル読込 [#h94e64a7]
 openFileInput() でStreamを取得し、read()で読み込む
    // テキストの読込
    public void loadText() throws IOException{
        String path = "data.txt";
        FileInputStream input = this.openFileInput(path);
        byte[] buffer = new byte[1000];
        input.read(buffer);
        String s = new String(buffer).trim();
        edit.setText(s);
        input.close();
    }
~

**ファイル書込 [#rd8b0e48]
 openFileOutput() で Streamを取得し、write()で書き込む
    // テキストの保存
    public void saveText(String data) throws IOException{
        String path = "data.txt";
        FileOutputStream output = this.openFileOutput(path, Context.MODE_WORLD_READABLE);
        output.write(data.getBytes());
        output.close();
    }
~
~
**SDカード へのアクセス[#y8b59eb6]



+外部ストレージのパスを取得する
+java.io.File の File クラスのインスタンスを生成。コンストラクタに "1."のパスとファイル名を指定。
+File Output Stream(File Input Stream)クラスのインスタンスを生成。コンストラクタに File クラスのインスタンスを指定。
+File Output Stream クラスの write() を使ってデータを書き込む。
書き込みが終わったら、 close() 。

-内部フラッシュでは/data/data/パッケージ名/xxxxにしかアクセスできない~
(例:/data/data/com.sudden Anger System/xxx)
-内部フラッシュは容量が小さい
-パスを意識すべきではない。(Contextクラスのメソッドは"/data/data/パッケージ名"の部分を解決してくれるので、それを使う)

~
AndroidでSDカードにアクセスするサンプル


 File file = Environment.getExternalStorageDirectory();
 File file = File("/sdcard");

~
~
**ディレクトリ構成について [#i1cc49d0]
 工事中

~
**参考 [#o53f4dce]

 Asset Managerの件~
 http://blog.haw.co.jp/android/?p=42~
 http://android.g.hatena.ne.jp/n4_t/20090622/1245689916~
 http://groups.google.co.jp/group/android-group-japan/browse_thread/thread/567326c74ebade70
~
~
 わかりやすかったHP~
 http://libro99.appspot.com/index3?id=36


~
~
  ''[[戻る>Android]]''
 ''[[戻る>Android]]''

Wiki TOP   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS