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.

No se puede leer archivos de texto fuera de la carpeta de activos con Angular Android.

Tengo el siguiente archivo ‘test.txt’.

Actualmente está almacenado así:
assets/test.txt

y obtengo el archivo de la siguiente manera:

fetch('./assets/test.txt').then(res => res.text())
  .then(text => {
      .then(() => {
        console.log('Funciona');
        return;
      }, (e) => {
        console.log(JSON.stringify(e.err));
      });
  });

Quiero mover este archivo de texto a otro directorio, es decir,
app/services/databaseService/test.txt

La recuperación anterior se encuentra dentro de un archivo que está ubicado en databaserService/ en el mismo directorio.

Cuando recupero desde esta nueva ubicación:

fetch('./test.txt').then(res => res.text())

o

fetch('./app/services/databaseServices/test.txt').then(res => res.text())

ambos fallan y el registro de la consola en Android Studio es:

Unable to open asset URL: http://localhost/app/services/databaseServices/test.txt

por lo tanto, solo funciona si el archivo .txt está en la carpeta assets.

¿Cómo puedo hacer para que el archivo se pueda leer desde la nueva ubicación?

Ten en cuenta que esta es una aplicación de Ionic Angular creada tanto para Android como para iOS.

Gracias

Imagen de la estructura de archivos: Image of file structure

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para acceder al archivo de texto desde la nueva ubicación, puedes utilizar el complemento cordova-plugin-file para leer archivos del sistema de archivos del dispositivo.

    Primero, instala el complemento ejecutando el siguiente comando:

    ionic cordova plugin add cordova-plugin-file
    npm install @ionic-native/file
    

    Luego, importa el módulo File en tu archivo Typescript:

    import { File } from '@ionic-native/file/ngx';
    

    Ahora, puedes utilizar el método File.readAsText() para leer el archivo de texto:

    this.file.readAsText(this.file.applicationDirectory + 'www/app/services/databaseService/', 'test.txt').then(text => {
        console.log(text);
    }).catch(error => {
        console.log(error);
    });
    

    Aquí, this.file.applicationDirectory + 'www/' es el directorio raíz de tu aplicación Ionic, y app/services/databaseService/test.txt es la ruta relativa al archivo de texto que deseas leer.

    Ten en cuenta que es posible que necesites utilizar rutas de archivo diferentes según la configuración de tu aplicación, y que el método File.readAsText() devuelve una Promesa, por lo que deberás manejar cualquier error o mostrar los datos de texto según corresponda.

Comments are closed.