我正在尝试将我现有的数据库从我的内部存储复制到外部存储,但我有一个小问题。它说the file does not exist
。这是我实际使用的内容:
将文件从内部存储复制到外部存储:
private void copyFile(String src, String dst) throws IOException{
FileChannel inChannel = new FileInputStream(src).getChannel();
FileChannel outChannel = new FileOutputStream(dst).getChannel();
try
{
inChannel.transferTo(0, inChannel.size(), outChannel);
}
finally
{
if (inChannel != null)
inChannel.close();
if (outChannel != null)
outChannel.close();
}
}
我是这样使用它的:
copyFile("/data/data/com.example.test/databases/database.sqlite","/sdcard/.Example/Data/database.sqlite");
但它不起作用,我很确定内部存储中的数据库在那里。
如果我在
copyFile
"/sdcard/.Example/Data/"
中设置为目标文件夹,它将在 Data
中创建文件 .Example
。我缺少什么建议?
最佳答案
使用它来将您的数据库复制到 SD 卡。
public void copyFile()
{
try
{
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite())
{
String currentDBPath = "\\data\\your.package.name\\databases\\dabase_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();
}
if(bool == true)
{
Toast.makeText(Settings.this, "Backup Complete", Toast.LENGTH_SHORT).show();
bool = false;
}
}
}
catch (Exception e) {
Log.w("Settings Backup", e);
}
}
关于Android 将数据库从内部存储复制到外部存储,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9066682/