Android 当手机没有'时复制数据库;我没有外部存储器

Android 当手机没有'时复制数据库;我没有外部存储器,android,backup,Android,Backup,我的应用程序中的备份数据库有问题。我正在安卓2.2.3上工作,并且已经安装了sd卡。制作数据库的副本效果很好。当我在手机上测试我的应用程序时,问题就出现了,手机的内部存储空间和sd卡(Nexus32GB)一样大。在这个场景中,我的方法无法将文件提取到sd卡,因为它不存在(sd卡)。如何将数据库复制到内部独立位置?我试过: File outPut = new File(Environment.getRootDirectory().toString() + "/myfolder/"); 但权限被拒

我的应用程序中的备份数据库有问题。我正在安卓2.2.3上工作,并且已经安装了sd卡。制作数据库的副本效果很好。当我在手机上测试我的应用程序时,问题就出现了,手机的内部存储空间和sd卡(Nexus32GB)一样大。在这个场景中,我的方法无法将文件提取到sd卡,因为它不存在(sd卡)。如何将数据库复制到内部独立位置?我试过:

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”);谢谢你的回答。我又遇到了另一个问题,我不明白为什么它被停止了我编辑了这篇文章