在我的应用程序中,我有这个代码,允许用户选择一个文件:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("text/plain");
startActivityForResult(intent,1);
用户可以从手机的任何位置选择.txt文件,甚至可以从谷歌驱动器中选择.txt文件。完成文件选择后,我检索对应于该文件的Uri对象。问题是我无法使用此Uri来读取文件,因为它无效。这是我的代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
Uri uri = data.getData();
File file = new File(uri.toString());
try{
InputStream inputStream = new FileInputStream(file);
int content;
while ((content = inputStream.read()) != -1) {
Log.d("===>", String.valueOf((char) content));
}
}catch (Exception e){
Log.d("===>", e.toString());
}
}
}
}
我总是得到一个fileNotFoundException。我的问题是,有没有办法读取所选文件(事先不知道它将来自哪个位置)。如果没有,有没有办法将所选文件复制到我很容易得到它的文件夹中?
答案 0 :(得分:3)
问题是我无法使用此Uri来读取文件,因为它无效。
这是因为Uri
不是文件。
有没有办法读取所选文件(事先不知道它将来自哪个位置)
用户未选择文件。用户选择了一段内容。
要使用Uri
代表的内容,请在openInputStream()
上致电ContentResolver
,然后传递Uri
。这样,您就可以使用InputStream
来阅读内容。