2014年2月9日日曜日

ローカルファイルの読み込み(getAssets(), BufferedReader)

これの続きです。
前回は「assets」の配下に「test.html」を作成して、
そのファイルをhtmlとして、読み込みましたが、
今回は中のファイルに何が書かれているかを見たいと思います。

注意点としては、assets配下のファイルは読み込みはできるけど、
書き込みはできません。
もう一度言います。
assets配下のファイルは読み込み可、書き込み不可です。
自分は書き込みをしたくて、一週間くらい調べましたができませんでした。

できる方法もあるかもしれませんが。。。 
リファレンス的には読み込み専用となっています。

http://developer.android.com/reference/android/content/res/AssetManager.html


■サンプルソース
package com.example.filemgr;

import java.io.BufferedReader;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import android.os.Bundle;
import android.app.Activity;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //インプットストリームの作成
        InputStream oInStream;
        String lineBuffer;
        String str = "";
        try {
            //assetsに存在するtest.htmlを開くという命令
            oInStream = getAssets().open("test.html");
            //リーダーでインプットストリームの内容を読む
            BufferedReader reader= new BufferedReader(new InputStreamReader(oInStream,"UTF-8"));
            while( (lineBuffer = reader.readLine()) != null ){
                str = str + lineBuffer;
            }
        } catch (IOException e) {
            // TODO 自動生成された catch ブロック
            e.printStackTrace();
        }

        //テキストビューの作成
        TextView oTextView = new TextView(getApplicationContext());
        oTextView.setText(str);

        //レイアウトの生成とテキストの貼り付け
        LinearLayout oLayout = new LinearLayout(getApplicationContext());
        oLayout.addView(oTextView);

        //レイアウトを表示
        setContentView(oLayout);
    }
}


■実行結果


■実行結果

みづらいけど、
前回作成したファイルの中身が見れました。。。

//リーダーでインプットストリームの内容を読む
BufferedReader reader= new BufferedReader(new InputStreamReader(oInStream,"UTF-8"));
while( (lineBuffer = reader.readLine()) != null ){
    str = str + lineBuffer;
}
ここらへんの処理はAndroidではあんまり使いませんが、
JAVAではよく使う処理です。

oInStream = getAssets().open("test.html");

これがミソです。

getAssets()で、アセットフォルダを取得しています。(イメージとして)

なので、ファイル名の指定だけで開けます。
これはAndroid特有の処理です。


0 件のコメント:

コメントを投稿