Ton*_*her 5 java android file path android-activity
我正在开发一个应用程序,我希望能够在该应用程序的.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);
}
});
Run Code Online (Sandbox Code Playgroud)
这看起来像在工作。
但是我的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() ;
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里看到的多个帖子混合在一起,但似乎没有一个起作用。
我得到这条路:
/document/home:List.txt
Run Code Online (Sandbox Code Playgroud)
它创建FileNotFoundException。如何获取文件的真实路径?
Com*_*are 10
我没有找到如何从Uri获取文件的方法。
没有文件。ACTION_OPEN_DOCUMENT并且ACTION_GET_CONTENT不打开文件。他们打开一个文件。该文档可能是文件。可能不会。那Uri可能指向:
BLOB在数据库的列中保存的字节流如何获取文件的真实路径?
你不知道
如果只希望接受文件,请集成文件选择器库,而不要使用ACTION_OPEN_DOCUMENT或
ACTION_GET_CONTENT。请记住,Android Q计划取消对外部存储的文件系统访问。
如果您使用ACTION_GET_CONTENT,并且Uri您获得的方案是file,那么getPath()它将是一个文件系统路径。
否则,您需要了解自己不知道文档来自何处,并停止考虑“文件的真实路径”。使用ContentResolver和openInputStream()将内容复制到您控制的某个文件中,然后使用该文件。
| 归档时间: |
|
| 查看次数: |
3864 次 |
| 最近记录: |