【问题标题】:How to backup sqlite database on internal storage如何在内部存储上备份 sqlite 数据库
【发布时间】:2012-10-22 11:59:32
【问题描述】:

我正在使用下面的代码将我的数据库复制到内部存储,但它并没有帮助我,而且总是出现这个错误。我经历了很多问题和答案,并尝试了很多博客文章,但无法使其发挥作用。我的手机是 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:打开失败: EROFS(只读文件系统)

请指导,因为我想将所有错误都存储在数据库中,以便我们以后分析。

谢谢

【问题讨论】:

  • 为什么是双 '//' ?错误来自您的 sdcard 被安装为只读,看起来。我不确定那个 FileChannel 的事情。也许普通的文件输入/输出流会更好?
  • 你是对的,当我尝试将文件写入 sd 卡时出现问题,然后它显示只读错误。 ...请建议。我的手机没有植根,我也不想这样做
  • 首先尝试在 sdcard 上创建一个写入文件。这可能是一些愚蠢的事情,比如 sdcard 被锁定了。
  • njzk2,谢谢它的工作。

标签: android android-intent android-sdcard android-sqlite


【解决方案1】:

试试这个方法。它对我有用。

String currentDBPath = "\\data\\"+ packageName +"\\databases\\"+"appDb.db";

也关注this post

谢谢。

【讨论】:

  • 永远不要使用这样的静态路径。请改用context.getDatabasePath(DataBaseHelper.dbName)
猜你喜欢
  • 2016-06-20
  • 2017-12-19
  • 2011-06-20
  • 1970-01-01
  • 2011-07-14
  • 2018-11-30
  • 2015-04-21
  • 2019-08-25
  • 1970-01-01
相关资源
最近更新 更多