Android 在那里创建本地文件夹和备份数据库文件

Android create local folder and backup database file there

我想实现一个简单的事情-按下一个按钮后,我想将应用程序数据库文件(从数据库文件夹)复制到新创建的文件夹BKP(如果不存在则创建)。

问题是,我总是得到

java.io.FileNotFoundException: /data/data/my_package/bkp/mydb.db (No such file or directory)

我这样试过:

  public void backUp() {
    try {

        File data = Environment.getDataDirectory();

            String currentDBPath ="/data/my_package/databases/mydb.db";
            String backupDBPath = "/data/my_package/bkp/mydb.db";
            String dir = "/data/my_package/bkp/";

        File directory = new File(dir);

        if (! directory.exists()){
           directory.mkdir(); }

            File currentDB = new File(data, currentDBPath);
            File backupDB = new File(data, 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(getApplicationContext(), "Backup is successful ", Toast.LENGTH_SHORT).show();


    } catch (IOException e) {
        e.printStackTrace();
    }
}

bkp 目录似乎还没有创建。

不过不确定这是否是一个好方法,我只想备份一个数据库文件,因为如果用户有一个新设备或卸载并重新安装应用程序,数据库将是空的。

也许一个好的解决方案是将 db 文件下载到通用下载文件夹,以便用户可以将其复制到任何地方并恢复。

我想要一些备份(不是云解决方案)并且没有外部驱动器,因为现在的磁盘空间对于 android 来说很大而且只有少数人还在使用 SD 卡。

问题出在 DIR 路径上。由于其他路径有 Environment.getDataDirectory() + 它们的路径,目录路径没有 getDataDirectory,所以路径中只有一个数据。现在 data/data 它起作用了,目录被创建了!

 String dir = "/data/data/my_package/bkp/";