2016-12-28 20 views
0
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();Environment.getExternalStorageDirectory返回坏值

/存储/模拟/ 0

enter image description here

复制的文件是不可见在我的SDcard中。此外,我知道sd文件的位置不正确。我怎样才能得到database.sql文件? UPDATE

enter image description here

+1

[外部存储](https://commonsware.com/blog/2014/04/08/storage-situation-external-storage.html)不是[可移动存储(https://开头commonsware.com/blog/2014/04/09/storage-situation-removable-storage.html)。你有很多应该修复的重复的'/'值。并且您的副本对于大多数应用程序(和桌面操作系统)都是不可见的,除非[您获得由'MediaStore'索引的副本](https://stackoverflow.com/questions/32789157/how-to-write-files -to-外部公共存储功能于Android的那么认为,他们 - 是 - visibl)。 – CommonsWare

回答

2

通过Environment.getExternalStorageDirectory返回的值是正确的,并没有什么不妥的地方。

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

因此在您的情况下,您需要展开storage文件夹,然后再扩大emulated0文件夹。

如果这样做不起作用,您可能需要尝试扩展storage文件夹,然后再打开selfprimary文件夹。

TLDR:手动跟随/展开info列中的路径。

编辑: 不妨扩展标记为黄色的文件夹。

Android Device Monitor File Explorer

+0

我的目标文件夹上的文件在文件夹6314-6720,所以我需要在该路径上创建文件?你有什么看法如何做到这一点? – Expiredmind

+0

你不需要创建任何东西(你的代码看起来很好),只需展开正确的文件夹并遵循符号链接即可。还要确保你的代码不会失败(检查logcat),你还需要写入外部存储的权限:WRITE_EXTERNAL_STORAGE。 Android设备监视器中的 –

+0

?存储/模拟文件夹是空的或我没有acces它 – Expiredmind

相关问题