Java 在Android中将内部Uri转换为文件?

Java 在Android中将内部Uri转换为文件?,java,android,file,uri,Java,Android,File,Uri,我有一个应用程序,允许用户从文件选择器中选择一个文件。问题在于,当我试图将该Uri转换为文件时,它会创建一些我无法使用的东西(/document/raw:/storage/simulated/0/Download/cbtTravely Backup/EntriesBackup1570487830108),我希望以正确的方式摆脱raw:之前的一切。每当我尝试使用InputStream从该文件复制时,它都不会复制任何内容。好像文件不存在。有什么想法吗 public void chooseDataba

我有一个应用程序,允许用户从文件选择器中选择一个文件。问题在于,当我试图将该Uri转换为文件时,它会创建一些我无法使用的东西(
/document/raw:/storage/simulated/0/Download/cbtTravely Backup/EntriesBackup1570487830108
),我希望以正确的方式摆脱
raw:
之前的一切。每当我尝试使用
InputStream
从该文件复制时,它都不会复制任何内容。好像文件不存在。有什么想法吗

public void chooseDatabaseFile() {
    Intent intent = new Intent();
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    // Set your required file type
    intent.setType("*/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Choose Database to Import"),GET_FILE_PATH);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == GET_FILE_PATH && data != null) {
        if(resultCode == RESULT_OK){
            Uri currFileURI = data.getData();
            if(currFileURI == null) {
                return;
            }
            else{
                String databasePath = currFileURI.getPath();
                // TODO: Determine if actual database
                importDatabase(new File(databasePath));
                // File produces "/document/raw:/storage/emulated/0/Download/CBTJourney-Backup/EntriesBackup1570487830108"
            }
        }
    }
}

你试过改变你的模版吗

否则,请看一下:


这实际上就是我用来获取lin
String databasePath=currFileURI.getPath()的答案。问题是,当我从下载文件夹中获取内容时,这也会产生
/document/raw:/storage/simulated/0/Download/cbtjourne Backup/EntriesBackup1570487830108
。我几乎可以肯定,
document/raw:
是这里的问题。但我不想只解析它。我确信有一个正确的方法可以解决这个问题,我就是找不到你是否尝试过使用我有一个类似的问题,当我必须支持不同的android版本来加载文件时,我实际上从另一个stackoverflow问题()中找到了答案。在发布之前,我仍然在理解它。除非你想给它一次投票机会!我昨天刚把它放进我的代码里,看看它是否能工作,它确实做到了。