gpt4 book ai didi

java - Android - 获取从文件资源管理器中选择的 .txt 文件的真实路径

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:00 26 4
gpt4 key购买 nike

我正在开发一个应用程序,我希望能够在 .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 获取文件。

现在,这是我的代码:

@Override
protected 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。如何获取文件的真实路径?

最佳答案

I didn't find how I can get the file from the Uri.

没有文件。 ACTION_OPEN_DOCUMENTACTION_GET_CONTENT 不打开文件。他们打开一份文件。该文档可能 是一个文件。它可能不会。Uri 可能指向:

  • 外部存储上的本地文件
  • 另一个应用程序内部存储的本地文件
  • 可移动存储上的本地文件
  • 本地加密文件,需要即时解密
  • 保存在数据库中 BLOB 列中的字节流
  • 一段内容需要其他应用先下载
  • ...等等

How can I get the real path of the file ?

你不知道。

如果您只想接受文件,请集成 a file chooser library而不是使用 ACTION_OPEN_DOCUMENTACTION_GET_CONTENT。请记住,文件系统对外部存储的访问在 Android 10+ 上受到限制。

如果你使用ACTION_GET_CONTENT,并且你得到的Uri的scheme是file,那么getPath() 将是一个文件系统路径。

否则,您需要了解您不知道文档来自何处,并且停止考虑“文件的真实路径”。使用 ContentResolveropenInputStream() 将内容复制到您控制的某个文件,然后使用该文件。

关于java - Android - 获取从文件资源管理器中选择的 .txt 文件的真实路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49221312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com