发布于 2010-01-04 01:21:31
SQLite数据库是完全独立的文件,并且是可移植的-您只需将整个文件直接复制到SD卡即可。
不过,首先我会检查设备中是否安装了SD卡,以及它的路径是什么(使用Environment.getExternalStorageDirectory()
)。
发布于 2010-04-18 18:19:10
这段代码对我来说很有效!
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "//data//{package name}//databases//{database name}";
String backupDBPath = "{database name}";
File currentDB = new File(data, currentDBPath);
File backupDB = new File(sd, backupDBPath);
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();
}
}
} catch (Exception e) {
}
有没有人知道这在非root手机上是否有效?我只在一个带根的G1上尝试过。
发布于 2012-01-18 08:23:00
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = "//data//"+ packageName +"//databases//"+dbList[0];
String backupDBPath = dbList[0];
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(getBaseContext(), backupDB.toString(), Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG).show();
}
这与上面的例子相反,在上面的例子中,"/“被"\”浪费了我生命中20分钟的时间来弄清楚,但我真的应该更早地看到这一点。Toast
会告诉你文件放在哪里,或者当它不能工作时告诉你哪里出了问题。
https://stackoverflow.com/questions/1995320
复制相似问题