我正在尝试备份android sqlite db。如果我运行代码一个文件夹是按照我在程序中给出的那样创建的。但是该文件夹是空的,请帮我备份我的数据库以及如何查看它。我正在使用Firefox sqlite manager。当我点击按钮备份数据库时,帮我备份我的数据库。
我的代码:
public void exportDatabase(String databaseName) {
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "//data//"+getPackageName()+"//databases//"+databaseName+"";
String backupDBPath = "PRIM.sqlite";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
System.out.println("@@ Enter 12222222222222");
if (currentDB.exists()) {
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
System.out.println("@@ Enter 2");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
看起来您正在尝试写入SD卡等外部存储设备。您需要在清单或运行时具有该权限。
https://developer.android.com/training/basics/data-storage/files.html#GetWritePermission
答案 1 :(得分:0)
这就是我在平板电脑上捕获EXTERNAL SD CARD路径的方法,它适用于所有具有SD卡的设备
var mainGroup = [String]()
var myDict: NSDictionary?
if let path = Bundle.main.path(forResource: "menu", ofType: "plist") {
myDict = NSDictionary(contentsOfFile: path)
}
if let dict = myDict {
print(dict)
for (_, value) in dict {
mainGroup.append("\(value)")
}
print(mainGroup)
}
THE_PATH是一个公共静态字符串,所以我可以在我的DBHelper中使用它,截至目前我在加载器Activity上捕获此路径