none
Cómo recorrer una carpeta de la aplicación RRS feed

  • Pregunta

  • Hola,

    En mi aplicación tengo una carpeta "/Images/Categories" donde tengo algunas imágenes. Quiero mostrar esas imágenes en una lista y para ello había pensado en crear un

    List<String>

    y rellenarlo con los nombres de las imágenes para luego poder usarlo en un Binding.

    ¿Cómo puedo acceder a esa carpeta para recorrer las imágenes?

    Gracias.

    viernes, 1 de noviembre de 2013 19:09

Respuestas

  • Hola Panzer

    El problema, como le explicaba a Leandro, es que LocalFolder en Windows Phone 8 es el directorio de datos de IsolatedStorage, no el directorio de instalación de tu app.

    Si lo que quieres es obtener una imágen del directorio Images/Categories, lo puedes hacer de la siguiente forma:

    var file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Images/Categories/nombreImagen.png");

    Si quieres obtener el directorio base de tu instalación, lo puedes hacer así:

    Windows.ApplicationModel.Package package = Windows.ApplicationModel.Package.Current;
    Windows.Storage.StorageFolder installedLocation = package.InstalledLocation;

    Con esto, installedLocation es un StorageFolder desde el que puedes usar el GetFoldersAsync para obtener lo que deseas.

    Un saludo!


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter

    • Marcado como respuesta PanzerIhnen sábado, 2 de noviembre de 2013 11:41
    sábado, 2 de noviembre de 2013 0:35
    Moderador

Todas las respuestas

  • hola

    Quickstart: Working with files and folders in Windows Phone 8

    como veras usas el

    Windows.Storage.ApplicationData.Current.LocalFolder

    para poder trabjar desde alli los datos localizados de la aplicacion

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 1 de noviembre de 2013 19:56
  • Gracias Leandro,

    Traté ya de utilizar eso:

    StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
                var dataFolder = await local.GetFolderAsync("Images/Categories");

    Pero me daba una excepción. También probé con:

    StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
    IReadOnlyList<StorageFolder> dataFolder = await local.GetFoldersAsync();

    Pero "dataFolder" no contenía nada. Por eso supuse que esos métodos sólo servían para carpetas creadas desde la aplicación, y no para las de la propia aplicación.

    ¿Qué estoy haciendo mal?

    Saludos.

    viernes, 1 de noviembre de 2013 20:35
  • Hola Leandro

    Eso no es correcto en absoluto. PanzerIhnen pregunta como acceder a un directorio de imágenes instalado con su aplicación. LocalFolder en Windows Phone 8 es el IsolatedStorage, no el directorio de la aplicación.

    Te ruego que no pongas en este foro enlaces sin siquiera haber probado la funcionalidad. Esto no funciona así y no dudaré en borrar los mensajes que no sean útiles.


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter

    sábado, 2 de noviembre de 2013 0:29
    Moderador
  • Hola Panzer

    El problema, como le explicaba a Leandro, es que LocalFolder en Windows Phone 8 es el directorio de datos de IsolatedStorage, no el directorio de instalación de tu app.

    Si lo que quieres es obtener una imágen del directorio Images/Categories, lo puedes hacer de la siguiente forma:

    var file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Images/Categories/nombreImagen.png");

    Si quieres obtener el directorio base de tu instalación, lo puedes hacer así:

    Windows.ApplicationModel.Package package = Windows.ApplicationModel.Package.Current;
    Windows.Storage.StorageFolder installedLocation = package.InstalledLocation;

    Con esto, installedLocation es un StorageFolder desde el que puedes usar el GetFoldersAsync para obtener lo que deseas.

    Un saludo!


    MCTS - .NET 4.0 Windows Applications
    MCTS - .NET 4.0 Data Access
    MCTS - .NET 4.0 Service Communication Applications
    MCPD - .NET 4.0 Windows Developer
    Visita mi Blog en Geeks.ms
    Sigueme en Twitter

    • Marcado como respuesta PanzerIhnen sábado, 2 de noviembre de 2013 11:41
    sábado, 2 de noviembre de 2013 0:35
    Moderador
  • Muchas gracias Josue, es justo lo que andaba buscando.

    Al final el código quedó así:

    _categorieImages = new List<string>();
    
    Windows.ApplicationModel.Package package = Windows.ApplicationModel.Package.Current;
    Windows.Storage.StorageFolder installedLocation = package.InstalledLocation;
    StorageFolder folderData = await installedLocation.GetFolderAsync("Images\\Categories");
    IReadOnlyList<StorageFile> images = await folderData.GetFilesAsync();
    foreach (StorageFile image in images)
    {
        _categorieImages.Add(image.Name);
    }

    Saludos.

    sábado, 2 de noviembre de 2013 11:45