PCで作成したsqliteをAndroidのアプリ内にコピーする

読み込んで値を入れていくと遅いのでコピーしてDBファイルを作ったほうよい。isImportDatabase()でfalseが返答された場合dbが作成されてないので、importDatabaseでコピーする。この例の場合はassetsにフォルダにsqliteを入れているsqliteをコピーしている。

    private class DbHelper extends SQLiteOpenHelper {
        private static final String DB_FILE_NAME = "old_db.sqlite3";
        private static final String DB_NAME = "new_db.db";
        private static final int DB_VERSION = 1;

        private Context context;
        private File newDb;

        public DbHelper(Context context) {
            super(context, DB_NAME, null, DB_VERSION);
            this.context = context;
            this.newDb = context.getDatabasePath(DB_NAME);
        }

        public boolean isImportDatabase() {
            return newDb.exists();
        }

        public boolean importDatabase() {
            if (!newDb.exists()) {
                getWritableDatabase().close();
                try {
                    copy(context.getAssets().open(DB_FILE_NAME), new FileOutputStream(newDb));
                    getWritableDatabase().close();
                    return true;
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return false;
        }

        private int copy(InputStream input, OutputStream output) throws IOException {
            byte[] buffer = new byte[1024 * 4];
            int count = 0;
            int n = 0;
            while (-1 != (n = input.read(buffer))) {
                output.write(buffer, 0, n);
                count += n;
            }
            return count;
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            super.onOpen(db);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        }
    }