SQLiteDiskIOException:在Android中复制数据库时出现磁盘I / O错误

时间:2012-11-09 14:45:42

标签: android database sqlite copy

复制数据库的代码:

        public static final String DB_PATH = Environment.getDataDirectory() + "/data/MyPackageName/databases/";
        public static final String DB_NAME = "MyDB.sqlite";
        private void copyDataBase(String dbPath){
            try{

                InputStream inputStream = context.getAssets().open(dbName);

                OutputStream appDB = new FileOutputStream(dbPath,false);

                byte[] buffer = new byte[1024];
                int length;
                while ((length = inputStream.read(buffer)) > 0) {
                    appDB.write(buffer, 0, length);
                }

                appDB.flush();
                appDB.close();
                inputStream.close();
            }catch(IOException e){
                e.printStackTrace();
            }

        }

这个代码在每个手机和每个Android版本都可以正常工作,但我在上面的代码或者这行中的某些手机(例如Galaxy S Plus)中得到了一个SQLiteDiskIOException:

 SQLiteDatabase db = super.getWritableDatabase();

每个人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

谢谢我的朋友, 使用https://github.com/jgilfelt/android-sqlite-asset-helper

中引入的SQLiteAssetHelper解决了我的问题