Android プログラミング データ読み書き

ファイル読み書き

public class FileEx extends Activity implements View.OnClickListener{

    private final static int WC = LinearLayout.LayoutParams.WRAP_CONTENT;
    private final static int MP = LinearLayout.LayoutParams.MATCH_PARENT;
    private final static String TAG_WRITE = "write";
    private final static String TAG_READ = "read";
    private EditText editText;

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

        LinearLayout layout = new LinearLayout(this);
        layout.setBackgroundColor(Color.WHITE);
        layout.setOrientation(LinearLayout.VERTICAL);
        setContentView(layout);

        editText = new EditText(this);
        editText.setText("");
        editText.setLayoutParams(new LinearLayout.LayoutParams(MP,WC));
        layout.addView(editText);

        layout.addView(makeButton("書き込み",TAG_WRITE));
        layout.addView(makeButton("読み込み",TAG_READ));
    }

    //    ボタン作成
    private Button makeButton(String text, String tag) {
        Button button = new Button(this);
        button.setText(text);
        button.setTag(tag);
        button.setOnClickListener(this);
        button.setLayoutParams(new LinearLayout.LayoutParams(WC, WC));
        return button;
    }

    @Override
    public void onClick(View v) {
        String tag = (String)v.getTag();
//        ファイルへの書き込み
        if(TAG_WRITE.equals(tag)){
            try{
                String str = editText.getText().toString();
                data2file(this,str.getBytes(),"test.txt");
            }catch (Exception e){
                editText.setText("書き込み失敗しました");
            }
//            ファイルからの読み込み
        }else if(TAG_READ.equals(tag)){
            try{
                String str = new String(file2data(this,"test.txt"));
                editText.setText(str);
            }catch (Exception e){
                editText.setText("読み込み失敗しました");
            }
        }
    }

    private static void data2file(Context context, byte[] w, String fileName) throws Exception{
        OutputStream out = null;
        try{
//            ファイル出力ストリームのオープン
            out = context.openFileOutput(fileName,Context.MODE_PRIVATE);
//            バイト配列の書き込み
            out.write(w, 0, w.length);
//            ファイル出力ストリームのクローズ
            out.close();
        }catch (Exception e){
            try{
                if ( out != null) out.close();
            }catch (Exception e2){

            }
            throw e;
        }
    }

    private static byte[] file2data(Context context, String fileName) throws Exception{

        int size;
        byte[] w = new byte[1024];
        InputStream in = null;
        ByteArrayOutputStream out = null;

        try{
//            ファイル入力ストリームのオープン
            in = context.openFileInput(fileName);
//            バイト配列の読み込み
            out = new ByteArrayOutputStream();
            while(true){
                size = in.read(w);
                if(size <= 0) break;
                out.write(w,0,w.length);
            }
            out.close();
//            ファイル入力ストリームのクローズ
            in.close();
//            ByteArrayOutputStreamオブジェクトのバイト配列
            return out.toByteArray();
        }catch (Exception e){
            try{
                if(in != null) in.close();
                if(out != null) out.close();
            }catch (Exception e2){
            }
            throw e;
        }
    }
}

データベースの読み書き

public class SQLiteEx extends Activity implements View.OnClickListener {

    private final static int WC = LinearLayout.LayoutParams.WRAP_CONTENT;
    private final static int MP = LinearLayout.LayoutParams.MATCH_PARENT;
    private final static String TAG_WRITE = "write";
    private final static String TAG_READ = "read";
    private final static String DB_NAME = "test.db";
    private final static String DB_TABLE = "test";
    private final static int DB_VERSION = 1;

    private EditText editText;
    private SQLiteDatabase db; //データベースオブジェクト

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

        LinearLayout layout = new LinearLayout(this);
        layout.setBackgroundColor(Color.WHITE);
        layout.setOrientation(LinearLayout.VERTICAL);
        setContentView(layout);

        editText = new EditText(this);
        editText.setText("");
        editText.setLayoutParams(new LinearLayout.LayoutParams(MP, WC));
        layout.addView(editText);

        layout.addView(makeButton("書き込み", TAG_WRITE));
        layout.addView(makeButton("読み込み", TAG_READ));

//        データベースオブジェクトの取得
        DBHelper dbHelper = new DBHelper(this);
        db = dbHelper.getWritableDatabase();

    }

    //    ボタン作成
    private Button makeButton(String text, String tag) {
        Button button = new Button(this);
        button.setText(text);
        button.setTag(tag);
        button.setOnClickListener(this);
        button.setLayoutParams(new LinearLayout.LayoutParams(WC, WC));
        return button;
    }

    @Override
    public void onClick(View v) {
        String tag = (String)v.getTag();
//        DBへの書き込み
        if(TAG_WRITE.equals(tag)){
            try{
                String str = editText.getText().toString();
                writeDB(str);
            }catch (Exception e) {
                editText.setText("書き込み失敗しました");
            }
//        DBからの読み込み
        }else if(TAG_READ.equals(tag)){
            try{
                String str = readDB();
                editText.setText(str);
            }catch (Exception e){
                editText.setText("読み込み失敗しました");
            }
        }
    }
//    データベースへの書き込み
    private void writeDB(String info) throws Exception{
        ContentValues values = new ContentValues();
        values.put("id", "0");
        values.put("info", info);
        int column = db.update(DB_TABLE,values,null,null);
        if ( column == 0) db.insert(DB_TABLE,"",values);
    }

//    データベースからの読み込み
    private String readDB() throws Exception{
        Cursor c = db.query(DB_TABLE, new String[]{"id", "info"}, "id='0'", null, null, null, null);
        if(c.getCount() == 0) throw new Exception();
        c.moveToFirst();
        String str = c.getString(1);
        c.close();
        return str;
    }

//データベースヘルパーの定義
    private static class DBHelper extends SQLiteOpenHelper{
        public DBHelper(Context context){
            super(context,DB_NAME,null,DB_VERSION);
        }

//    データベースの生成、データベース生成時に呼ばれる
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL("create table if not exists " +
                DB_TABLE +"(id text primary key, info text)");
        }

//    データベースのアップグレード、データベースアップグレード時に呼ばれる
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("drop table if exists " + DB_TABLE);
            onCreate(db);
        }
    }
}

プリファレンスの読み書き

    @Override
    public void onClick(View v) {
        String tag = (String)v.getTag();
//        プリファレンスオブジェクトの取得
        SharedPreferences pref = getSharedPreferences("PreferernceEx",MODE_PRIVATE);
//      プリファレンスへの書き込み
        if(TAG_WRITE.equals(tag)){
            SharedPreferences.Editor editor = pref.edit();
            editor.putString("text", editText.getText().toString());
            editor.commit();
//            プリファレンスからの読み込み
        }else if(TAG_READ.equals(tag)){
            editText.setText(pref.getString("text", ""));
        }
    }

システムクリップボード

public class ClipboardEx extends Activity implements View.OnClickListener {

    private final static int WC = LinearLayout.LayoutParams.WRAP_CONTENT;
    private final static String TAG_TEXT_COPY = "text_copy";
    private final static String TAG_TEXT_PASTE = "text_paste";
    private final static String TAG_URI_COPY = "uri_copy";
    private final static String TAG_URI_PASTE = "uri_paste";
    private final static String TAG_INTENT_COPY = "intent_copy";
    private final static String TAG_INTENT_PASTE = "intent_paste";

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

        LinearLayout layout = new LinearLayout(this);
        layout.setBackgroundColor(Color.WHITE);
        layout.setOrientation(LinearLayout.VERTICAL);
        setContentView(layout);

        layout.addView(makeButton("テキストのコピー", TAG_TEXT_COPY));
        layout.addView(makeButton("テキストのペースト", TAG_TEXT_PASTE));
        layout.addView(makeButton("URIのコピー", TAG_URI_COPY));
        layout.addView(makeButton("URIのペースト", TAG_URI_PASTE));
        layout.addView(makeButton("インテントのコピー", TAG_INTENT_COPY));
        layout.addView(makeButton("インテントのペースト",TAG_INTENT_PASTE));
    }

    //    ボタン作成
    private Button makeButton(String text, String tag) {
        Button button = new Button(this);
        button.setText(text);
        button.setTag(tag);
        button.setOnClickListener(this);
        button.setLayoutParams(new LinearLayout.LayoutParams(WC, WC));
        return button;
    }

    @Override
    public void onClick(View v) {
        String tag = (String)v.getTag();
        try{
//            テキストのコピー
            if(TAG_TEXT_COPY.equals(tag)){
                ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
                ClipData cd = ClipData.newPlainText("text text","This is TEST");
                cm.setPrimaryClip(cd);
//                テキストのペースト
            }else if(TAG_TEXT_PASTE.equals(tag)){
                ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
                String str = cm.getPrimaryClip().getItemAt(0).getText().toString();
                toast(str);
//                URIのコピー
            }else if(TAG_URI_COPY.equals(tag)){
                ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
                ClipData cd = ClipData.newUri(getContentResolver(), "test uri", Uri.parse("http://python.org"));
                cm.setPrimaryClip(cd);
//                URIのペースト
            }else if(TAG_URI_PASTE.equals(tag)){
                ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
                Uri uri = cm.getPrimaryClip().getItemAt(0).getUri();
                toast(uri.toString());
//                インテントのコピー
            }else if(TAG_INTENT_COPY.equals(tag)){
                ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                ClipData cd = ClipData.newIntent("test intent",intent);
                cm.setPrimaryClip(cd);
//                インテントのペースト
            }else if(TAG_INTENT_PASTE.equals(tag)){
                ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
                Intent intent = cm.getPrimaryClip().getItemAt(0).getIntent();
                startActivity(intent);
            }
        }catch (Exception e){
            toast(e.getMessage());
        }
    }

    private void toast(String text){
        if(text == null) text = "";
        Toast.makeText(this,text,Toast.LENGTH_LONG).show();
    }
}

参考文献