SQLiteDiskIOException错误代码10:磁盘I / O错误

我把一个SQLite数据库移动到一个SD卡,但有时它会抛出以下exception:

android.database.sqlite.SQLiteDiskIOException: error code 10: disk I/O error 

有关如何防止这种情况发生的任何build议?

  • 卸载Android应用程序时数据库不会被删除
  • 使用Cursor获取字段值
  • Android Room编译时警告外​​键中的列不是索引的一部分。 这是什么意思?
  • SQLiteDatabase:只有当值不存在时才插入(不通过原始SQL命令)
  • Android:批量插入,当InsertHelper弃用
  • 插入SQLite数据库android
  • 如何开始使用SQLCipher for android?
  • 如何使用SQLiteDatabase.CursorFactory
  • 由于您使用的是外部存储,因此您的应用程序必须了解可通过Environment.getExternalStorageState()获取的外部存储状态。

    状态为MOUNTED时,您只能访问外部存储。

    如果您在设备启动时尝试打开文件(或SQLite数据库,它只是一个文件!),您肯定会遇到问题,因为直到设备启动(显示主屏幕之后), 才会挂载外部存储。

    解决方法是注册一个IntentFilter ,通知外部存储状态的所有变化,并相应地执行。

    阅读文档总是一个好主意! 有关详细信息,请参阅Android文档: http : //developer.android.com/reference/android/os/Environment.html

    使用外部存储为此目的是可疑的,因为你无法控制什么时候变得不可用! 例如,用户将他们的设备插入他们的计算机上的USB,并select“启用USB大容量存储”选项,以便他们可以从他们的计算机访问他们的设备的外部存储。 坏消息! 您的应用将从外部存储中断开,最有可能的是没有任何清理IO的机会!

    在这种情况下,如果只有可用的数据,那么您现在只剩下要处理的所有数据。