2012年9月24日月曜日

Android SDカードに配置したデータベースをデータベースフォルダにコピーする

SDカードに配置したSQLiteデータベースをデータベースフォルダにコピーします。
public class MainActivity extends Activity {

    public void button1Click(View view){
        try {
            final String DB_NAME = "HelloAndroid.db";
            //既存データベースを削除
            this.deleteDatabase(DB_NAME);
            //コピー元パス(SDカード)
            String pathFrom = Environment.getExternalStorageDirectory().getPath() + "/" + DB_NAME;
            //コピー先パス(データベースフォルダ)
            String pathTo = this.getDatabasePath(DB_NAME).getPath();
            //コピー
            FileInputStream fis = new FileInputStream(pathFrom);
            FileChannel channelFrom = fis.getChannel();    
            FileOutputStream fos = new FileOutputStream(pathTo);
            FileChannel channeTo = fos.getChannel();
            try {
                channelFrom.transferTo(0, channelFrom.size(), channeTo);
            } finally {
                fis.close();
                channelFrom.close();
                fos.close();
                channeTo.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
DatabaseHelperのonCreateでやれば良いと思う。

0 件のコメント: