Inicio rápido: acceder a archivos mediante programación (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

Accede a los archivos y carpetas que se encuentran en una ubicación, como una carpeta, biblioteca, dispositivo o ubicación de red. También puedes consultar los archivos y las carpetas que hay en una ubicación si creas consultas de archivos y carpetas.

Requisitos previos

Enumerar los archivos y carpetas de primer nivel en una ubicación

  1. Consigue un objeto StorageFolder que represente la ubicación.

    Si quieres obtener una lista del contenido de una carpeta en particular, debes obtener primero un objeto StorageFolder que represente esa ubicación.

    La muestra de enumeración de carpetas ilustra cómo obtener la biblioteca de imágenes:

    var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;
    

    En el ejemplo anterior, usamos KnownFolders para obtener la biblioteca de imágenes (como un objeto StorageFolder). Puedes usar propiedades KnownFolders para obtener carpetas que representen varios recursos de usuario como bibliotecas, dispositivos o ubicaciones de red.

    Importante  Si quieres usar una propiedad KnownFolders para acceder a una biblioteca, un dispositivo o una ubicación de red, tu aplicación debe tener la capacidad correspondiente en el manifiesto de la aplicación. Para obtener más información sobre las funcionalidades y el acceso a archivos, consulta Acceso a archivos y permisos de archivo y Acceso a recursos de usuario con Windows en tiempo de ejecución.

     

  2. Consigue una lista del contenido de la carpeta.

    La muestra de enumeración de carpetas ilustra cómo obtener una lista de elementos en la biblioteca de imágenes:

    picturesLibrary.getItemsAsync().then(function (items) {
    

    Como se muestra en el ejemplo anterior, puedes llamar a getItemsAsync() para obtener una lista de todo el contenido de la carpeta (un objeto StorageFolder). Si no quieres todos los elementos, puedes llamar a getItemsAsync(startIndex, maxItemsToRetrieve) para obtener contenido de la carpeta en un rango por índice.

    Cuando llamas a un método getItemsAsync en una carpeta, la lista de elementos para recibir está limitada a los archivos y subcarpetas de esa carpeta y no incluye ningún archivo ni carpeta contenidos en esas subcarpetas.

    Si quieres una lista de los archivos de una carpeta, puedes llamar a un método getFilesAsync. Si quieres una lista de carpetas, puedes llamar a un método getFoldersAsync.

    Usa then después de obtener la operación para definir una función que tome la lista de objetos que recibes, items en el ejemplo anterior, y que realice las otras tareas que necesitas.

  3. Trabaja con la lista.

    La muestra de enumeración de carpetas ilustra cómo realizar tareas adicionales con la lista de items en la biblioteca de imágenes:

    
        outputHeader(picturesLibrary.name, items.size);
        items.forEach(function (item) { 
            if (item.isOfType(Windows.Storage.StorageItemTypes.folder)) { 
                output(id(picturesLibrary.name), item.name + "\\"); 
            } 
            else { 
                output(id(picturesLibrary.name), item.fileName); 
            } 
        });
    

    El ejemplo anterior pasa el name de la carpeta y el size de la lista a una función auxiliar que le muestra esta información al usuario.

    También puedes iterar a través de la lista de elementos para realizar tareas adicionales, como se muestra en el ejemplo anterior. Puedes llamar a forEach en la lista de elementos para iterar a través de elementos de la lista. La función que pasas a forEach debe tomar un elemento de la lista como un argumento, y se ejecutará para cada item de la lista.

    Puedes seguir procesando cada item al llamar a métodos en ellos individualmente. En el ejemplo anterior, se determina si el item es una carpeta (objeto StorageFolder) o un archivo (objeto StorageFile) al comparar el resultado del método isOfType, presente en archivos y carpetas, con el valor de enumeración StorageItemTypes. Usamos esta comparación para pasar diferente información acerca del elemento a la función auxiliar output, pero también puedes realizar un número de tareas adicionales.

    Para obtener más contexto y ver cómo actúan las funciones outputHeader y output, descarga la muestra de enumeración de carpetas.

Cuando termines, el código tendrá un aspecto similar al siguiente:


// Get folder
var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;

//  Get folder contents
picturesLibrary.getItemsAsync().then(function (items) {
    // Then perform tasks with the list of files and folders that was retrieved

    // For example, display name of containing folder and count of items in folder
    outputHeader(picturesLibrary.name, items.size);

    // For example, display info for each item
    items.forEach(function (item) { 
        if (item.isOfType(Windows.Storage.StorageItemTypes.folder)) { 
            output(id(picturesLibrary.name), item.name + "\\"); 
        } 
        else { 
            output(id(picturesLibrary.name), item.fileName); 
        } 
    }); 
});

Consultar archivos en una ubicación

  1. Consigue la carpeta contenedora.

    Si deseas obtener una lista del contenido de una carpeta en particular, debes obtener primero la carpeta.

    La muestra de enumeración de carpetas ilustra cómo obtener la biblioteca de imágenes:

    var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;
    

    En el ejemplo anterior, usamos KnownFolders para obtener la biblioteca de imágenes (como un objeto StorageFolder). Puedes usar propiedades KnownFolders para obtener carpetas que representen varios recursos de usuario como bibliotecas, dispositivos o ubicaciones de red.

    Importante  Si quieres usar una propiedad KnownFolders para acceder a una biblioteca, un dispositivo o una ubicación de red, tu aplicación debe tener la capacidad correspondiente en el manifiesto de la aplicación. Para obtener más información sobre las funcionalidades y el acceso a archivos, consulta Acceso a archivos y permisos de archivo y Acceso a recursos de usuario con Windows en tiempo de ejecución.

     

  2. Crea una consulta de carpeta para organizar archivos según se especifiquen.

    Cuando creas una consulta de carpeta desde una carpeta, los archivos de esa carpeta y sus subcarpetas se organizan en grupos automáticamente, en función de tus criterios. Los grupos resultantes son carpetas virtuales que tienen todas las funciones de una carpeta en el sistema de archivos, lo que te permite obtener y procesar los archivos dentro de ellas según sea necesario.

    La muestra de enumeración de carpetas ilustra cómo crear una consulta de carpeta que agrupa imágenes en la biblioteca de imágenes por el mes en el que se tomaron o crearon:

    var query = picturesLibrary.createFolderQuery(Windows.Storage.Search.CommonFolderQuery.groupByMonth);
    

    Como se muestra en el ejemplo anterior, puedes llamar a createFolderQuery(query) en tu carpeta para crear una consulta de carpeta (un objeto StorageFolderQueryResult) para organizar los archivos de esa carpeta y subcarpetas en carpetas virtuales en función del valor CommonFolderQuery especificado. En el ejemplo, elegimos agrupar los archivos de imágenes de la carpeta picturesLibrary en carpetas virtuales en función del mes (CommonFolderQuery.groupByMonth) en el que se tomó o creó la imagen.

    También puedes crear consultas de carpeta al llamar a createFolderQuery() o a createFolderQueryWithOptions.

  3. Consigue la lista de carpetas virtuales desde la consulta.

    La muestra FolderEnumeration en la página principal de muestras de aplicaciones usa query para obtener la lista de carpetas virtuales:

    
    query.getFoldersAsync().then(function (monthList) {
        monthList.forEach(function (month) { 
    

    Como se muestra en el ejemplo anterior, puedes llamar a getFoldersAsync() en tu consulta de carpeta para obtener una lista de tus carpetas virtuales. Usa then para definir una función que procese tu lista. En el ejemplo, nuestra consulta devuelve una lista de carpetas virtuales que representan meses, monthList, y procesamos nuestra lista al llamar a monthList.forEach y al definir una función para procesar cada carpeta month.

  4. Consigue la lista de archivos de la carpeta virtual.

    La muestra de creación de carpetas ilustra cómo usar la carpeta month para obtener la lista de imágenes que se tomaron o crearon en ese mes:

    
            var tempMonthName = month.name; 
            month.getFilesAsync().then(function (files) {
    

    Sugerencia  Puede que necesites almacenar información acerca de tu carpeta virtual (month) para que puedas usarla más adelante. En el ejemplo anterior, almacenamos el nombre de la carpeta virtual (month.name) en tempMonthName para poder usarla al procesar la lista de imágenes (files).

     

    Usa then para definir una función que procese la lista de archivos que recibes.

Cuando termines, el código tendrá un aspecto similar al siguiente:


// Get folder
var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary; 

// Create query
var query = picturesLibrary.createFolderQuery(Windows.Storage.Search.CommonFolderQuery.groupByMonth); 

// Get virtual folders from query
query.getFoldersAsync().then(function (monthList) { 
    monthList.forEach(function (month) {
 
        var tempMonthName = month.name;
        // Get files from virtual folder 
        month.getFilesAsync().then(function (files) { 
            // Then perform tasks with retrieved files
        }); 
    }); 
});

Resumen y siguientes pasos

Para obtener más información acerca de cómo leer archivos y escribir en ellos, consulta Inicio rápido: lectura y escritura de archivos y la Muestra de acceso de archivos. Para aprender a trabajar con archivos de imágenes, consulta Cómo seleccionar y mostrar una imagen o Cómo decodificar una imagen y la Muestra del uso de un blob para guardar y cargar contenido.

Para aprender a acceder a archivos mediante el selector de archivos, consulta Inicio rápido: acceso a archivos mediante selectores de archivos.

Temas relacionados

Obtener acceso a datos y archivos

Acceso a archivos y permisos de archivo

Inicio rápido: acceso a archivos mediante selectores de archivos

Inicio rápido: lectura y escritura de archivos

Muestra de búsqueda de archivos mediante programación

Muestra de enumeración de carpetas

Muestra de acceso de archivos

Muestra del uso de un blob para guardar y cargar contenido

Referencia

Windows.Storage.KnownFolders class

Windows.Storage.StorageFile class

Windows.Storage.StorageFolder class

Windows.Storage.StorageItemTypes enum

Windows.Storage.Search.CommonFolderQuery enum

Windows.Storage.Search.StorageFolderQueryResult class