将数据库导出到Android中的下载文件夹?

时间:2016-03-23 19:21:25

标签: android sqlite file export

我在Android上阅读了有关导出数据库文件的其他帖子,但我无法弄清楚如何在Downloader文件夹上创建或复制此数据库。

我在我的Manifest(权限)上使用:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

的活动:

我按下按钮时调用此函数但没有任何反应(没有异常,没有文件副本或从currentDBPath创建)

public void exportDatabase() {  
    try {
        File download_folder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
        File data = Environment.getDataDirectory();

        if (download_folder.canWrite()) {
            String currentDBPath = "//data//"+getPackageName()+"//databases//"+"YourWords";
            String backupDBPath = "YourWords";
            File currentDB = new File(data, currentDBPath);
            File backupDB = new File(download_folder, 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();
            }
        }
    } catch (Exception e) {

    }      
}  

1 个答案:

答案 0 :(得分:1)

永远没有硬编码路径

要使File对象指向数据库,假设数据库位于默认位置use getDatabasePath()

此外,永远不会出现异常

Log.e("RuslanApp", "Crash in saving database", e);添加到catch块,以便您可以使用LogCat查看可能出现的问题。