我正在使用下面的代码将我的数据库复制到内部存储,但它并没有帮助我,总是得到这个错误。我经历了很多问题和答案,并尝试了很多博客文章,但我无法使其发挥作用。我的手机 HTC One X
我还在清单文件中添加了一项权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
public static boolean backUpDataBase(Context context)
{
String packageName = "com.projectWork.mobile";
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (Environment.MEDIA_MOUNTED.equals(sd))
{
String currentDBPath = "//data//"+ packageName +"//databases//"+"appDb.db";
String backupDBPath = "appDb.db";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
Toast.makeText(context, backupDB.toString(), Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
Toast.makeText(context, e.toString(), Toast.LENGTH_LONG).show();
}
return true;
}
这是我得到的错误
java.io.FileNotFoundException:/mnt/sdcard/appDb.db:open failed: EROFS(只读文件系统)
请指导,因为我想将所有错误存储在数据库中,以便我们以后可以分析它们。
由于
答案 0 :(得分:1)
试试这种方式。它在我身边起作用。
String currentDBPath = "\\data\\"+ packageName +"\\databases\\"+"appDb.db";
同时关注this post
感谢。