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/";
我想实现一个简单的事情-按下一个按钮后,我想将应用程序数据库文件(从数据库文件夹)复制到新创建的文件夹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/";