从手机上的任何位置读取.txt文件

时间:2016-12-10 15:44:26

标签: android

在我的应用程序中,我有这个代码,允许用户选择一个文件:

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。我的问题是,有没有办法读取所选文件(事先不知道它将来自哪个位置)。如果没有,有没有办法将所选文件复制到我很容易得到它的文件夹中?

1 个答案:

答案 0 :(得分:3)

  

问题是我无法使用此Uri来读取文件,因为它无效。

这是因为Uri不是文件。

  

有没有办法读取所选文件(事先不知道它将来自哪个位置)

用户未选择文件。用户选择了一段内容。

要使用Uri代表的内容,请在openInputStream()上致电ContentResolver,然后传递Uri。这样,您就可以使用InputStream来阅读内容。