es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Leer archivo de texto desde el teléfono en Android.

Estoy intentando acceder a un archivo de texto en Android, pero está dando un error open failed: ENOENT (No such file or directory) como si el archivo de texto no estuviera presente en el teléfono.

        if (txt_file.endsWith(".txt")) {
              try {
                    Log.e("TAG", "path " + txt_file);
                    InputStream is = new FileInputStream(txt_file);
                    ByteArrayOutputStream bos = new ByteArrayOutputStream();
                    byte[] b = new byte[1024];
                    int bytesRead;
                    while ((bytesRead = is.read(b)) != -1) {
                         bos.write(b, 0, bytesRead);
                    }
                    byte[] bytes = bos.toByteArray();
                    byte[] dataToSave = Base64.encode(bytes, Base64.DEFAULT);

                    } catch (IOException e) {
                                e.printStackTrace();
                    }
          }

He registrado el txt_file antes del InputStream y está devolviendo la ruta correcta del archivo de texto.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El error open failed: ENOENT (No such file or directory) típicamente ocurre cuando la ruta del archivo proporcionada es incorrecta o cuando el archivo no existe. Dado que ya ha confirmado que la ruta registrada es correcta, es posible que la aplicación no tenga los permisos necesarios para acceder al archivo.

    Para acceder a archivos en Android, la aplicación necesita solicitar permiso para acceder al almacenamiento externo en el archivo AndroidManifest.xml. Puede agregar el siguiente permiso al archivo XML:

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
    

    Además, para versiones más nuevas de Android (6.0 y superiores), los usuarios necesitan otorgar permiso a la aplicación para acceder al almacenamiento externo en tiempo de ejecución.

    Puede usar el siguiente código para solicitar permiso en tiempo de ejecución:

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
        // Permiso ya concedido, acceda al archivo aquí
    } else {
        // Solicitar permiso
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE);
    }
    

    Asegúrese de manejar la respuesta de solicitud de permiso usando el método onRequestPermissionsResult.

    Si las soluciones anteriores no solucionan su problema, es posible que desee verificar si el archivo existe usando el método File.exists() y depurar aún más.

Comments are closed.