Android 从手机上的任何位置读取.txt文件
在我的应用程序中,我有以下代码,允许用户选择文件:Android 从手机上的任何位置读取.txt文件,android,Android,在我的应用程序中,我有以下代码,允许用户选择文件: Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("text/plain"); startActivityForResult(intent,1); 用户可以从手机的任何地方选择.txt文件,甚至可以从谷歌硬盘上选择。完成文件选择后,我检索与该文件对应的Uri对象。问题是我无法使用此Uri读取文件,因为它无效。这是我的密码: @Override prote
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("text/plain");
startActivityForResult(intent,1);
用户可以从手机的任何地方选择.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。我的问题是,有没有一种方法可以读取所选文件(而不事先知道它将来自何处)。如果没有,是否有办法将所选文件复制到一个我可以轻松获取的文件夹中
问题是我无法使用此Uri读取文件,因为它无效
这是因为Uri
不是文件
是否有办法读取所选文件(不事先知道文件的来源)
用户没有选择文件。用户选择了一段内容
要使用
Uri
表示的内容,请在ContentResolver
上调用openInputStream()
,传入Uri
。这将为您提供一个InputStream
,您可以使用它来读取内容。我刚刚查看了contentProvider文档,说实话,我不太明白我应该做什么。我应该创建一个从contentProvider类扩展而来的类吗?@Mtoypc:对不起,我的意思是ContentResolver
——我已经修复了我的答案。在任何方便的上下文
上调用getContentResolver()
,例如活动
。然后,在ContentResolver
上调用openInputStream()
。非常感谢,您今天救了我两次