Android 当手机没有'时复制数据库;我没有外部存储器
我的应用程序中的备份数据库有问题。我正在安卓2.2.3上工作,并且已经安装了sd卡。制作数据库的副本效果很好。当我在手机上测试我的应用程序时,问题就出现了,手机的内部存储空间和sd卡(Nexus32GB)一样大。在这个场景中,我的方法无法将文件提取到sd卡,因为它不存在(sd卡)。如何将数据库复制到内部独立位置?我试过:Android 当手机没有'时复制数据库;我没有外部存储器,android,backup,Android,Backup,我的应用程序中的备份数据库有问题。我正在安卓2.2.3上工作,并且已经安装了sd卡。制作数据库的副本效果很好。当我在手机上测试我的应用程序时,问题就出现了,手机的内部存储空间和sd卡(Nexus32GB)一样大。在这个场景中,我的方法无法将文件提取到sd卡,因为它不存在(sd卡)。如何将数据库复制到内部独立位置?我试过: File outPut = new File(Environment.getRootDirectory().toString() + "/myfolder/"); 但权限被拒
File outPut = new File(Environment.getRootDirectory().toString() + "/myfolder/");
但权限被拒绝,无法创建包含数据的文件夹。有人能指出正确的方向吗
编辑:
我不明白。我想用数据备份创建新文件夹。我已经为它定义了正确的位置,但它说找不到文件。SD卡存在。为什么它不能创建文件夹-“/storeUGif/databaseName.db”
以下是目标文件夹的绝对路径:
public static final String OUTPUT_BACKUP_DATABASE = Environment.getExternalStorageDirectory().getAbsolutePath() + "/storeUGif/" + SqliteHelper.DATABASE_NAME;
if(isSdPresent())
{
//File outPut = new File(Environment.getExternalStorageDirectory().getAbsolutePath().toString()+"/StoreUGif/"+SqliteHelper.DATABASE_NAME);
File outPut = new File(Tools.OUTPUT_BACKUP_DATABASE);
File storeUGif = new File(Environment.getExternalStorageDirectory().getAbsolutePath().toString());
storeUGif.mkdir();
File currentDB = getApplicationContext().getDatabasePath(SqliteHelper.DATABASE_NAME);
FileInputStream is = new FileInputStream(currentDB);
OutputStream os = new FileOutputStream(outPut);
byte[] buffer = new byte[1024];
while (is.read(buffer) > 0) {
os.write(buffer);
}
os.flush();
os.close();
is.close();
}
else
{
Toast.makeText(this, "SDCard is unvailable", Toast.LENGTH_SHORT).show();
}
使用
Environment.getExternalStorageDirectory()
获取有效路径。不管名称如何,它都将返回默认存储,即外部存储或(如果丢失)内部存储
供参考:try:File outPut=new File(context.getExternalFilesDir(Environment.DIRECTORY\u DCIM),“myfolder”);谢谢你的回答。我又遇到了另一个问题,我不明白为什么它被停止了我编辑了这篇文章