为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕少森 2019-06-16 15:15:05
从文件资源管理器中选择的.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。如何获得文件的真正路径?
查看完整描述

1 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

我没有找到如何从URI中获取文件。

没有档案。ACTION_OPEN_DOCUMENTACTION_GET_CONTENT不要打开文件。他们打开一份文件。那份文件强权做个档案。可能不会。那,那个Uri可能指的是:

  • 外部存储的本地文件
  • 另一个应用程序内部存储的本地文件
  • 可移动存储的本地文件
  • 加密并需要动态解密的本地文件。
  • 中保存的字节流。

    BLOB

    数据库中的列
  • 一段需要先由另一应用程序下载的内容
  • .等等

如何获得文件的真正路径?

你没有。

如果希望只接受文件,请集成文件选择器库而不是使用ACTION_OPEN_DOCUMENTACTION_GET_CONTENT..请记住,对外部存储的文件系统访问将在AndroidQ中消失。

如果你用ACTION_GET_CONTENT的方案Uri你得到的是file,然后getPath()将是一个文件系统路径。

否则,你得明白你不知道这份文件是从哪里来的停止思考“文件的真实路径”。使用ContentResolveropenInputStream()若要将内容复制到您控制的某个文件,请使用该文件。


查看完整回答
反对 回复 2019-06-16
  • 1 回答
  • 0 关注
  • 445 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号