Читать файл из файлового менеджера - PullRequest
0 голосов
/ 27 сентября 2018

Я хочу выбрать файл с помощью средства выбора файлов Android, а затем отобразить его содержимое в компоненте EditText.

У меня есть этот метод, где я открываю файловый менеджер и ищу файл в папке «Загрузки»

public void btnSearch(View view){
    Intent fileIntent = new Intent(Intent.ACTION_GET_CONTENT);
    fileIntent.setType("*/*");
    fileIntent.addCategory(Intent.CATEGORY_OPENABLE);


    try {
        startActivityForResult(Intent.createChooser(fileIntent,"Seleccione"),FILE_SELECTED_CODE);
    } catch (android.content.ActivityNotFoundException ex){
        System.out.println( ex.getMessage());
        Toast.makeText(this,"Install a File Manager. ", Toast.LENGTH_SHORT).show();
    }

}

И затем я использую этот метод для чтения содержимого файла

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(data == null)
        return;

    switch (requestCode){
        case FILE_SELECTED_CODE:
            if(resultCode == RESULT_OK){
                Uri uri = data.getData();

                String ruta = uri.getPath();
                File archivo = new File(ruta);
                try {
                    BufferedReader reader = new BufferedReader(new FileReader(archivo));
                    String linea = "";
                    String texto = "";
                    while((linea  = reader.readLine()) != null){
                        texto += linea;
                    }

                    EditText tbxDatos = (EditText) findViewById(R.id.compDatos);

                    tbxDatos.setText(texto);

                } catch(Exception e){
                    System.out.println( e.getMessage());
                }
            }
            break;
    }
    super.onActivityResult(requestCode,resultCode,data);
}

Но теперь у меня возникает это исключение при выборе файла из средства выбора файлов:

 Exception: /document/33 (No such file or directory)

Есть идеи?Спасибо.

1 Ответ

0 голосов
/ 27 сентября 2018

Попробуйте этот пример Прямо из документов !!!

private String readTextFromUri(Uri uri) throws IOException {
    InputStream inputStream = getContentResolver().openInputStream(uri);
    BufferedReader reader = new BufferedReader(new InputStreamReader(
        inputStream));
    StringBuilder stringBuilder = new StringBuilder();
    String line;
    while ((line = reader.readLine()) != null) {
        stringBuilder.append(line);
    }
    fileInputStream.close();
    parcelFileDescriptor.close();
    return stringBuilder.toString();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...