使用意图选择要在安卓中读取的文件我使用意图来获取我选择的文件路径,如下所示:
Intent inputFile = new Intent(Intent.ACTION_PICK);
inputFile.setType("*/*");
inputFile.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(inputFile.createChooser(inputFile, "Select csv"),1010);
但是收到的路径不使用 FileInputStream 来读取它。
例如:通过意图接收的路径是:/document/primary:File.csv
读取文件所需的路径是:/storage/emulated/0/File.csv
ACTION_PICK
不选取文件。它选择内容。大多数时候,您将获得具有content
方案的Uri
,并且不需要这是一个文件。
另请注意,ACTION_PICK
不使用 MIME 类型,并且确实需要一个Uri
来指示从何处选择。如果要按MIME类型选择,或者选择任何内容,ACTION_GET_CONTENT
或ACTION_OPEN_DOCUMENT
是更好的选择。这些也会给你一个content
Uri
。
如果需要文件,请执行以下任一操作:
-
不要使用
Intent
,而是使用文件选择器库 -
正如 greenapps 建议的那样,使用
ContentResolver
和openInputStream()
来获取内容的InputStream
,然后将该内容写入您控制的某些文件(例如,将字节复制到FileOutputStream
(
或者,直接使用InputStream
。