none
¿Cómo leer un archivo del proyecto al cargar mi app? RRS feed

  • Pregunta

  • Hola,

    Estoy haciendo mi primera App para Windows 8 y vengo en busca de ayuda porque la plataforma es muy nueva para mi y aún no se como hacer muchas cosas.

    Tengo un archivo de texto en Assets/Texto.txt y necesito cargar su contenido en un string al iniciarse la aplicación.

    Lo que he intentado es leerla en el constructor de la página, donde inicio todas las demás cosas, pero no me deja por ser métodos asíncronos:

                var uri = new Uri("ms-appx:///Assets/Texto.txt");
                var archivo = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri);
                var texto = await FileIO.ReadTextAsync(archivo);
    

    ¿Cuál sería la forma correcta de cargar recursos externos (Build Action = Cotent) para usar en una App Windows 8?

    jueves, 15 de noviembre de 2012 12:37

Respuestas

  • Gracias por el enlace. Lamentablemente no se a qué Lab te refieres. Al final lo he resuelto yo mismo. Lo explico por si alguien llega aquí con la misma duda:

    Lo primero de todo es que en el constructor de MainPage (recordemos que estoy haciendo una aplicación con C# y XAML para la Store de Windows 8) se puede llamar a un método async, pero no se puede esperar por él. Hablando mal, no se puede escribir await dentro de un constructor de clases de UI. Por lo tánto, el código anterior (recordemos):

       var uri = new Uri("ms-appx:///Assets/Texto.txt");
       var archivo = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri);
       var texto = await FileIO.ReadTextAsync(archivo);

    no podría ir dentro del constructor.  Este código se podría encapsular en un método async void que fuera llamado desde el constructor de MainPage. Al finalizar de construirse MainPage, no tendríamos la certeza de que se ha leído el archivo externo (recordemos que es asíncrono). Entonces, lo que tendríamos que hacer para garantizar que la aplicación ha cargado el texto es, dejar la aplicación inusable (por medio de un splashscreen o elementos de interfaz deshabilitados) hasta que se lea el archivo. Y después de esas tres lineas, habría que añadir el código necesario para habilitar la aplicación y usar ese texto donde queramos.

    Seguro que volveré por aquí con dudas. Saludos


    • Marcado como respuesta Daniel San lunes, 19 de noviembre de 2012 2:36
    lunes, 19 de noviembre de 2012 2:35

Todas las respuestas

  • Hola

    puedes descargar checar este enlace http://msdn.microsoft.com/es-ES/windows/apps/jj674832 hay dos tutoriales puedes descargarte la parte de C# y XAML y checar como hacen la parte que necesitas... cualquier duda del desarrollo nos la comentas.... 

    buen día.. en el ejemplo puedes ver que hacen una carga desde un archivo de texto en formato json... y mucho mas...

    jueves, 15 de noviembre de 2012 17:42
  • Gracias por el enlace. Lamentablemente no se a qué Lab te refieres. Al final lo he resuelto yo mismo. Lo explico por si alguien llega aquí con la misma duda:

    Lo primero de todo es que en el constructor de MainPage (recordemos que estoy haciendo una aplicación con C# y XAML para la Store de Windows 8) se puede llamar a un método async, pero no se puede esperar por él. Hablando mal, no se puede escribir await dentro de un constructor de clases de UI. Por lo tánto, el código anterior (recordemos):

       var uri = new Uri("ms-appx:///Assets/Texto.txt");
       var archivo = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri);
       var texto = await FileIO.ReadTextAsync(archivo);

    no podría ir dentro del constructor.  Este código se podría encapsular en un método async void que fuera llamado desde el constructor de MainPage. Al finalizar de construirse MainPage, no tendríamos la certeza de que se ha leído el archivo externo (recordemos que es asíncrono). Entonces, lo que tendríamos que hacer para garantizar que la aplicación ha cargado el texto es, dejar la aplicación inusable (por medio de un splashscreen o elementos de interfaz deshabilitados) hasta que se lea el archivo. Y después de esas tres lineas, habría que añadir el código necesario para habilitar la aplicación y usar ese texto donde queramos.

    Seguro que volveré por aquí con dudas. Saludos


    • Marcado como respuesta Daniel San lunes, 19 de noviembre de 2012 2:36
    lunes, 19 de noviembre de 2012 2:35