Administración de archivos, de principio a fin

[ 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

Aprende a agregar funcionalidades de administración de archivos a tu aplicación de la Tienda Windows utilizando JavaScript y ejecutando Windows 8.1.

En cada sección de este tema se describe una función clave de la administración de archivos, se incluye un vínculo a un tema que ofrece más detalles sobre esa función y se proporciona información sobre cómo encontrar rápidamente el código relevante en el tema Administración de archivos, de principio a fin que complementa este tema.

Nota  Muchas de las funciones que se usan para interactuar con carpetas y archivos son asincrónicas. Puedes aprender cómo escribir aplicaciones JavaScript asincrónicas en Programación asincrónica en JavaScript.

 

Conceptos básicos de archivos: enumerar, obtener propiedades y leer y escribir datos

icono de paso Inicio rápido: acceder a archivos mediante programación

Puedes acceder a los archivos de una ubicación como una carpeta, una biblioteca, un dispositivo o una ubicación de red, simplemente con una línea de código — una llamada a la función StorageFolder.getFilesAsync. Consulta Acceder a archivos mediante programación para obtener instrucciones paso a paso que muestran cómo realizar tareas como enumerar las carpetas y los archivos de nivel superior de una ubicación especificada y cómo consultar archivos en una ubicación.

Estos pasos te muestran cómo enumerar archivos en una ubicación determinada:

  1. Adquiere un objeto StorageFolder para la ubicación que quieras. Por ejemplo, puedes hacerlo haciendo referencia a una de las propiedades estáticas de KnownFolders, como KnowFolders.picturesLibrary.
  2. Llama a la función StorageFolder.getFilesAsync del objeto StorageFolder devuelto. La muestra complementaria de este tema llama a este método sin ningún parámetro, indicando que deben devolverse todos los archivos. Para ver ejemplos de llamada a StorageFolder.getFilesAsync con una consulta, revisa el contenido de Inicio rápido: acceder a archivos mediante programación.
  3. Cuando se haya completado la función StorageFolder.getFilesAsync, puedes utilizar un bucle forEach para iterar por cada archivo devuelto.

Este ejemplo de código enumera todos los archivos de Imágenes.


// Get a StorageFolder object representing Pictures.
var library = Windows.Storage.KnownFolders.picturesLibrary;

// Get all files from the StorageFolder object.
library.getFilesAsync().then(function (files) {
    // For each file found ...
    files.forEach(function (file) {
        // ... perform your processing.
        });
    });
}

Esta captura de pantalla de la muestra complementaria muestra un ejemplo de enumeración de los archivos en Imágenes.

Captura de pantalla de la muestra de administración de archivos: enumeración de los archivos de la biblioteca Imágenes.

Búscalo en la muestra: la muestra incluye una página llamada FileAccessBasics (Conceptos básicos del acceso a archivos) que incluye los ejemplos presentados en esta sección. El código JavaScript y HTML relevante se centraliza en los archivos FileAccessBasicsPage.js (función OnEnumPicturesClick) y FileAccessBasicsPage.html.

icono de paso

Inicio rápido: obtener las propiedades de un archivo

Las propiedades de un archivo describen o cuantifican un atributo de un archivo o su contenido. Por ejemplo, las propiedades del archivo incluyen datos como nombre de archivo, ruta de acceso, tamaño de archivo, atributos de archivo y fecha del último acceso. El tema Inicio rápido: obtener las propiedades de un archivo muestra cómo recuperar y mostrar las propiedades básicas y de nivel superior de un archivo.

Estos pasos muestran cómo obtener propiedades de archivo básicas o de nivel superior:

Este ejemplo de código enumera todos los archivos de Imágenes y muestra varias propiedades de archivo básicas y de nivel superior. Observa cómo se utilizan promises de JavaScript para sincronizar los resultados de dos operaciones asincrónicas (StorageFolder.getFilesAsync y StorageFile.getBasicPropertiesAsync). Para obtener más información acerca de la programación asincrónica y promises en JavaScript, consulta Programación asincrónica en JavaScript.


// Get a StorageFolder object representing the Pictures Library.
var library = Windows.Storage.KnownFolders.picturesLibrary;

// Initialize string that holds all property information.
var outString = "";

// Get all files from the StorageFolder object.
library.getFilesAsync().then(function (files) {
    var promises = [];
    files.forEach(function (file) {
        promises.push(WinJS.Promise.as(file));
        promises.push(file.getBasicPropertiesAsync());
    })
    return WinJS.Promise.join(promises);
})
.done(function (results) {
    var counter = 0

    while (counter < results.length) {
        var file = results[counter];
        var props = results[counter + 1];
        outString += "File name: " + file.name + "<br/>";
        outString += "File type: " + file.fileType + "<br/>";
        outString += "File size: " + props.size + "<br/>";
        outString += "<br/>"
        counter = counter + 2;
    }
});

Esta captura de pantalla de la muestra complementaria muestra un ejemplo de obtención de varias propiedades de archivo básicas y de nivel superior.

Captura de pantalla de la muestra de administración de archivos: obtener las propiedades de los archivos.

Búscalo en la muestra: la muestra incluye una página llamada FileAccessBasics (Conceptos básicos del acceso a archivos) que incluye los ejemplos presentados en esta sección. El código JavaScript y HTML relevante se centraliza en los archivos FileAccessBasicsPage.js (función OnGetFilePropertiesClick) y FileAccessBasicsPage.html.

icono de paso

Inicio rápido: lectura y escritura de archivos

Una aplicación de la Tienda Windows lee y escribe archivos mediante la clase FileIO. Consulta Inicio rápido: lectura y escritura de archivos para ver ejemplos de código que ilustran cómo leer y escribir varios tipos de datos usando las clases FileIO y StorageFile.

Dn595121.wedge(es-es,WIN.10).gifEscritura de texto en un archivo

  1. Para escribir en un archivo, primero debes adquirir un objeto StorageFile para pasar a una de las funciones FileIO para escribir datos. En la muestra complementaria, esto se lleva a cabo creando un archivo a través de la función StorageFolder.createFileAsync.
  2. Cuando ya tengas un objeto StorageFile, puedes escribir texto en su archivo subyacente a través de una de las funciones FileIO.writeTextAsync sobrecargadas.
Este ejemplo de código escribe la fecha y la hora actuales en un archivo de muestra.

// Create the sample file; replacing it if it already exists.
var lib = Windows.Storage.KnownFolders.picturesLibrary;
lib.createFileAsync("FileHandlingJs.txt", 
    Windows.Storage.CreationCollisionOption.replaceExisting)
.then(function (file) {
    if (file) {
        // Format a string based on the current data/time.
        var now = new Date();
        var sampleFileContents = 
            [[now.getMonth() + 1, now.getDate(), now.getFullYear()].join("/"),
            [now.getHours(), AddZero(now.getMinutes())].join(":"),
            now.getHours() >= 12 ? "PM" : "AM"].join(" ");

        // Write the text to the sample file.
        Windows.Storage.FileIO.writeTextAsync(file, sampleFileContents)
        .then(function () {
            // File's contents have been written at this point.
        }, 
        function (error) {
            // Handle error.
        });
    }
});

Dn595121.wedge(es-es,WIN.10).gifLectura de texto desde un archivo

  1. Para leer el contenido de un archivo, primero debes adquirir un objeto StorageFile para pasar a una de las funciones FileIO para leer datos. En la muestra complementaria, esto se lleva a cabo llamando a la función StorageFolder.getFileAsync.
  2. Cuando ya tengas un objeto StorageFile, puedes leer texto de su archivo subyacente a través de una de las funciones FileIO.readTextAsync sobrecargadas.
Este ejemplo de código lee el contenido de un archivo de muestra.

// Open sample file.
Windows.Storage.KnownFolders.picturesLibrary.getFileAsync("FileHandlingJs.txt")
.then(function (file) {
    // If file found ...
    if (file) {
        // Read file's contents.
        Windows.Storage.FileIO.readTextAsync(file).then(function (contents) {
            // Process file contents as needed.
        });
    }
}, function (error) {
    // Handle error.
});

Esta captura de pantalla muestra un ejemplo de cómo se ejecuta la muestra y cómo se escribe en el archivo de muestra.

Captura de pantalla de la muestra de administración de archivos: escribir datos de texto en un archivo.

Búscalo en la muestra: la muestra incluye una página llamada FileAccessBasics (Conceptos básicos del acceso a archivos) que incluye las muestras presentadas en esta sección. El código JavaScript y HTML relevante se centraliza en los archivos FileAccessBasicsPage.js (funciones OnWriteTextToFileClick y OnReadTextFromFileClick) y FileAccessBasicsPage.html.

 

Trabajar con selectores de archivos y carpetas

icono de paso

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

Los selectores, tanto de archivos como de carpetas, se usan para mostrar al usuario una lista de archivos o carpetas en la que puede seleccionar uno o varios elementos para procesarlos posteriormente. Los selectores se pueden configurar con programación para buscar archivos y carpetas que coincidan con un filtro especificado (por ejemplo, archivos con extensiones determinadas), comenzar en una carpeta determinada o mostrar un modo de vista específico (lista o miniaturas), entre otras cosas.

Los siguientes procedimientos ilustran cómo configurar los diversos selectores para seleccionar un único archivo, varios archivos o una única carpeta.

Dn595121.wedge(es-es,WIN.10).gifConfigurar un selector de archivos para seleccionar un solo archivo

  1. Crea una instancia del objeto FileOpenPicker.
  2. Establece las propiedades viewMode, suggestedStartLocation y fileTypeFilter del objeto FileOpenPicker, según las necesites.
  3. Llama la función FileOpenPicker.pickSingleFileAsync. Cuando la función FileOpenPicker.pickSingleFileAsync esté completa, la aplicación tendrá acceso de lectura/escritura al archivo seleccionado.
Este ejemplo de código crea y muestra un selector de archivos para la selección de un único archivo.

// Instantiate a FileOpenPicker object.
var openPicker = new Windows.Storage.Pickers.FileOpenPicker();

// Set the FileOpenPicker object's key properties.
openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;

openPicker.suggestedStartLocation = 
    Windows.Storage.Pickers.PickerLocationId.picturesLibrary;

openPicker.fileTypeFilter.replaceAll([".jpg", ".jpeg", ".png" ]);

// Display the FileOpenPicker for single file selection.
openPicker.pickSingleFileAsync().then(function (file) {
    // If the user selected a file ...
    if (file) {
        // ... process file as needed.
    }
    else {
        // User canceled the operation.
    }
});

Dn595121.wedge(es-es,WIN.10).gifConfigurar un selector de archivos para seleccionar varios archivos

  1. Crea una instancia del objeto FileOpenPicker.
  2. Establece las propiedades FileOpenPicker.viewMode, FileOpenPicker.suggestedStartLocation y FileOpenPicker.FileTypeFilter del objeto FileOpenPicker, según las necesites.
  3. Llama la función FileOpenPicker.pickMultipleFileAsync. Cuando la función FileOpenPicker.pickMultipleFileAsync esté completa, la aplicación tendrá acceso de lectura/escritura a los archivos seleccionados. Estos archivos se representan mediante una matriz de objetos StorageFile. La propiedad sizes de la matriz indica cuántos archivos se seleccionaron, para que puedas usar un bucle for con la anotación de matriz estándar para tener acceso a cada objeto StorageFile.
Este código de ejemplo crea y muestra un selector de archivos para seleccionar varios archivos.

// Instantiate a FileOpenPicker object.
var openPicker = new Windows.Storage.Pickers.FileOpenPicker();

// Set the FileOpenPicker object's key properties.
openPicker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;

openPicker.suggestedStartLocation = 
    Windows.Storage.Pickers.PickerLocationId.picturesLibrary;

openPicker.fileTypeFilter.replaceAll([".jpg", ".jpeg", ".png"]);

// Display the FileOpenPicker for multiple-file selection.
openPicker.pickMultipleFilesAsync().then(function (files) {
    // If the user selected at least one file ...
    if (files.size > 0) {
        for (var i = 0; i < files.size; i++) {
            // ... process each file - For example, files[i]
        }
    }
    else {
        // User canceled the operation.
    }
});

Dn595121.wedge(es-es,WIN.10).gifConfigurar un selector de carpetas

  1. Crea una instancia del objeto FolderPicker.
  2. Establece las propiedades FolderPicker.viewMode, FolderPicker.suggestedStartLocation y FolderPicker.fileTypeFilter del objeto FolderPicker, según las necesites.
  3. Llama la función FileOpenPicker.pickSingleFileAsync. Cuando la función FolderPicker.pickSingleFolderAsync esté completa, la aplicación tendrá acceso de lectura/escritura a la carpeta seleccionada, incluidas las subcarpetas.
Este ejemplo de código crea una instancia de un selector de carpetas y lo muestra.

// Instantiate a FolderPicker object.
var folderPicker = new Windows.Storage.Pickers.FolderPicker();

// Set the FileOpenPicker object's key properties.
folderPicker.suggestedStartLocation = 
    Windows.Storage.Pickers.PickerLocationId.desktop;
folderPicker.fileTypeFilter.replaceAll([".docx", ".xlsx", ".pptx"]);

// Display the FolderPicker for folder selection.
folderPicker.pickSingleFolderAsync().then(function (folder) {
    // If the user selected a folder ...
    if (folder) {
        // ... get the folder object.
        Windows.Storage.AccessCache.StorageApplicationPermissions.
        futureAccessList.addOrReplace("PickedFolderToken", folder);
        // Process folder as needed.
    }
    else {
        // User canceled operation.
    }
});

Esta captura de pantalla muestra los resultados de ejecutar la muestra y seleccionar dos archivos (sample1.png y sample2.png).

Captura de pantalla de la muestra de administración de archivos: usar selectores de archivos y carpetas.

Búscalo en la muestra: la muestra incluye una página llamada File and Folder Pickers (Selectores de archivos y carpetas) que demuestra las tareas detalladas en esta sección. El código JavaScript y HTML para esta muestra se encuentra en los archivos FilePickerPage.js y FilePickerPage.html, respectivamente.

 

Trabajar con archivos de OneDrive

icono de paso

Inicio rápido: determinar la disponibilidad de los archivos de OneDrive

Windows 8.1 permite a los usuarios marcar los archivos de OneDrive como de solo en línea. Cuando el usuario se desconecta de OneDrive, estos archivos no están disponibles. Para ayudarte a determinar la disponibilidad de un archivo con programación, existe una nueva propiedad llamada StorageFile.isAvailable.

Estos pasos muestran cómo determinar la disponibilidad de los archivos utilizando la propiedad StorageFile.isAvailable.

  1. Adquiere un objeto StorageFolder para la ubicación que desees. Por ejemplo, puedes llevarlo a cabo haciendo referencia a una de las propiedades de KnownFolders estáticas, como KnowFolders.picturesLibrary.
  2. Llama a la función StorageFolder.getFilesAsync del objeto StorageFolder devuelto. La muestra complementaria de este tema llama a este método sin ningún parámetro, indicando que deben devolverse todos los archivos. Para ver ejemplos de llamada a StorageFolder.getFilesAsync con una consulta, revisa el contenido de Inicio rápido: acceder a archivos mediante programación.
  3. Cuando se haya completado la función StorageFolder.getFilesAsync, puedes utilizar un bucle forEach para iterar por cada archivo devuelto.
Este ejemplo de código enumera todos los archivos de Imágenes, mostrando el nombre, el nombre del proveedor y la disponibilidad de cada archivo.

// Get a StorageFolder object representing Pictures.
var library = Windows.Storage.KnownFolders.picturesLibrary;

// Initialize string that will contain the file name, provider name, 
// and availability for each file.
var outString = "";

// Get all files from the StorageFolder object.
library.getFilesAsync().then(function (files) {
    // For each file found ...
    files.forEach(function (file) {
        // Retrieve the file's name, provider name, and availability.
        outString += file.name 
                  + " (on " 
                  + file.provider.displayName 
                  + ") is " 
                  + (file.isAvailable ? "available" : "not available") + "\n";
    });
});

Esta captura de pantalla muestra el resultado de comprobar la disponibilidad de los archivos de Imágenes.

Captura de pantalla de la muestra de administración de archivos: trabajar con archivos de OneDrive.

Búscalo en la muestra: la muestra incluye una página titulada "OneDriveFilesPage" (Página de archivos de OneDrive) que contiene un botón que enumera todos los archivos de la biblioteca Imágenes del equipo local. Cada nombre de archivo se muestra junto con el proveedor del archivo (por ejemplo, PC o OneDrive), y muestra si el archivo está o no está actualmente disponible. El código JavaScript y HTML para esta muestra se encuentra en los archivos OneDriveFilesPage.js y OneDriveFilesPage.html, respectivamente.

 

Últimas acciones

icono de requisitos de la tienda

Uso del Kit para la certificación de aplicaciones en Windows

Se recomienda. Ejecutar el Kit para la certificación de aplicaciones en Windows te ayuda a asegurarte de que tu aplicación cumple los requisitos de la Tienda Windows. Te recomendamos que lo ejecutes cada vez que agregues funciones importantes a la aplicación.

icono de detención

¡Has terminado! Ahora que has explorado las diferentes funcionalidades de administración de archivos para tu aplicación, es el momento de crear una aplicación como la muestra de Administración de archivos, de principio a fin.

 

¿Quieres más información?

Inicio rápido: programación asincrónica en JavaScript

Más información sobre la programación asincrónica en JavaScript.

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

Más información sobre cómo enumerar archivos.

Inicio rápido: lectura y escritura de archivos

Más información sobre cómo leer y escribir archivos.