无法写入SD卡

时间:2014-07-28 19:34:52

标签: android database android-sqlite

尝试将我的应用程序数据库导出到SD卡但它仍然失败。

以下行FileChannel src = new FileInputStream(currentDB).getChannel();

似乎失败了
public void exportDB() {
        try {
            File sd = Environment.getExternalStorageDirectory();
            File data = Environment.getDataDirectory();

            if (sd.canWrite()) {

                String currentDBPath = "//data//" + "com.rcd.simpleregister"
                        + "//databases//" + "accounts.db";
                String backupDBPath = "/sdcard/";
                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(mContext, "Backup Successful!",
                        Toast.LENGTH_SHORT).show();

            }

        } catch (Exception e) {

            Toast.makeText(mContext, "Backup Failed!", Toast.LENGTH_SHORT)
                    .show();

        }
    }

有谁知道可能导致这种情况的原因?

1 个答案:

答案 0 :(得分:0)

如果目标文件尚未存在,请尝试创建。

if (!backupDB.exists())
    backupDB.createNewFile();

您的目录路径也存在问题。它可能不仅仅是/sdcard/

最后,如果您使用的是三星设备,则不会大声使用没有root权限的非三星应用程序写入外部SD卡和其他外部存储媒体。