为什么不匹配路径?

时间:2019-04-16 09:54:17

标签: android file android-intent filepath java-io

我遇到问题,我尝试将文件保存到自定义目录,但不起作用。

首先,我选择了downloads目录,但是该副本无效。

如果我添加一个constans目录文件夹,则进行下载,该副本正在运行。

问题在于,两个目录路径不存在。

如果我添加一个康斯坦斯路径,例如:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 路径为:/storage/emulated/0/Download

但是,如果我从意图中添加了一个自定义路径,并且选择了downloads目录,则该路径为:com.android.providers.downloads.documents/tree/downloads

我复制文件的功能:

database.close();
        File sourceDb = context.getDatabasePath("app_database");
        File destinationDb = new File(filePath + "/app_database");
        File file=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
        try {
            FileUtils.copyFile(sourceDb, destinationDb);
        } catch (Exception e) {
            return "Error";
        }

我的意图:

Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
                i.addCategory(Intent.CATEGORY_DEFAULT);
                startActivityForResult(Intent.createChooser(i, "Choose directory"), 100);


public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode==100){
            informationSnackbar(data.getData().toString());
...
}

1 个答案:

答案 0 :(得分:0)

ACTION_OPEN_DOCUMENT不返回File。它返回指向Uri的{​​{1}}。

要写入由DocumentsProvider标识的文档,请使用UriContentResolver获得openOutputStream(),您可以将数据库复制到其中。