Environment.getExternalStorageDirectory返回错误值

时间:2016-12-28 11:42:58

标签: android database

public void exportDatabse(String databaseName) {

        try {
            File sd = Environment.getExternalStorageDirectory();
            File data = Environment.getDataDirectory();
           if (sd.canWrite()) {
                String currentDBPath = "//data//"+getPackageName()+"//databases//"+databaseName+"";
                String backupDBPath ="//database.sql";
                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();
                    Log.i(TAG,"coping database sucessfull");
                }
            }
        } catch (Exception e) {
        Log.i(TAG,"exception! "+ e.getMessage());
        }
    }

调试sd文件位置File sd = Environment.getExternalStorageDirectory();

  

/存储/模拟/ 0

enter image description here

复制的文件在我的SD卡中不可见。此外,我知道sd文件的位置不正确。我怎样才能获得database.sql文件? 更新

enter image description here

1 个答案:

答案 0 :(得分:2)

Environment.getExternalStorageDirectory返回的值是正确的,并且没有任何问题。

这里的问题是 Android设备监视器不直接支持符号链接(符号链接)。您应该在文件资源管理器中手动关注/展开它们。

因此,在您的情况下,您需要展开{​​{1}}文件夹,然后展开storageemulated文件夹。

如果这不起作用,您可能需要尝试展开0文件夹,后跟storageself文件夹。

TLDR:手动关注/展开primary列中的路径。

修改 尝试展开以黄色标记的文件夹。

Android Device Monitor File Explorer