从文件资源管理器中选择的.txt文件的真实路径

从文件资源管理器中选择的.txt文件的真实路径

我正在开发一个应用程序,在这个应用程序中,我希望能够在.txt文件上从应用程序导出和导入一些数据。应用程序的最小API为21。

出口部分运行良好,但我对进口部分有困难。

我打开文件资源管理器:

butImportPatient.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View view) {
         Intent intent = new Intent();
         intent.setAction(Intent.ACTION_OPEN_DOCUMENT);
         intent.setType("*/*");
         startActivityForResult(intent, IMPORTPATIENT_ACTIVITY_REQUEST_CODE);
    }});

这看起来很管用。

但是我的onActivityResult没有工作,我没有找到如何从URI中获取文件。

现在,这是我的代码:

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {

      if (requestCode == IMPORTPATIENT_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
            File file = new File(data.getData().getPath()) ;
            String path = file.getAbsolutePath() ;
            StringBuilder text = new StringBuilder();

            try {
                BufferedReader br = new BufferedReader(new FileReader(path));
                String line;

                while ((line = br.readLine()) != null) {
                    text.append(line);
                    text.append("\n");

                }
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

            AlertDialog.Builder builder = new AlertDialog.Builder(this) ;
            builder.setMessage(path)
                    .show() ;

        }
 }

这是我在这里看到的多个帖子的组合,但似乎都没有效果。

我知道这条路:

/document/home:List.txt

它创建FileNotFoundException。如何获得文件的真正路径?


慕少森
浏览 446回答 1
1回答

江户川乱折腾

我没有找到如何从URI中获取文件。没有档案。ACTION_OPEN_DOCUMENT和ACTION_GET_CONTENT不要打开文件。他们打开一份文件。那份文件强权做个档案。可能不会。那,那个Uri可能指的是:外部存储的本地文件另一个应用程序内部存储的本地文件可移动存储的本地文件加密并需要动态解密的本地文件。中保存的字节流。BLOB数据库中的列一段需要先由另一应用程序下载的内容.等等如何获得文件的真正路径?你没有。如果希望只接受文件,请集成文件选择器库而不是使用ACTION_OPEN_DOCUMENT或ACTION_GET_CONTENT..请记住,对外部存储的文件系统访问将在AndroidQ中消失。如果你用ACTION_GET_CONTENT的方案Uri你得到的是file,然后getPath()将是一个文件系统路径。否则,你得明白你不知道这份文件是从哪里来的停止思考“文件的真实路径”。使用ContentResolver和openInputStream()若要将内容复制到您控制的某个文件,请使用该文件。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java