Idioma: HTML | XAML

Administración de archivos, de principio a fin

Aprende a agregar funcionalidades de administración de archivos a tu aplicación de la Tienda Windows con C++, C# o Visual Basic y que se ejecuten en 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  Muchos de los métodos que se usan para interactuar con carpetas y archivos son asincrónicos. Puedes aprender cómo escribir aplicaciones asincrónicas de Microsoft Visual C# en Inicio rápido: usar el operador await para la programación asincrónica.

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 obtener acceso a archivos de una ubicación como, por ejemplo, una carpeta, una biblioteca, un dispositivo o una ubicación de red, simplemente con dos líneas de código: una llamada a la función StorageFolder.GetFilesAsync. Consulta Inicio rápido: acceder a archivos mediante programación para obtener instrucciones paso a paso que ilustran 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. Después, llama al método StorageFolder.CreateFileQuery del objeto StorageFolder devuelto sin parámetros e indica que quieres todas las carpetas y todos los archivos que se han devuelto.
  3. Cuando se devuelve la llamada a StorageFolder.CreateFileQuery, tendrás un objeto StorageFileQueryResult. Llama a su método GetFilesAsync.
  4. El método StorageFileQueryResult.GetFilesAsync devuelve una colección IReadOnlyList de objetos StorageFile que se puede iterar con un bucle foreach.

Este ejemplo de código enumera todos los archivos de Imágenes. Se usa un método de extensión de Visual C# para que puedas realizar fácilmente consultas sobre los archivos desde cualquier ubicación compatible.



// Generic extension method that returns all files for the specified 
// KnownFolders location.
public static async 
Task<System.Collections.Generic.IReadOnlyList<StorageFile>> 
GetLibraryFilesAsync(this StorageFolder folder)
{
    var query = folder.CreateFileQuery();
    return await query.GetFilesAsync();
}

...

// Enumerate all files in Pictures.
var files = await KnownFolders.PicturesLibrary.GetLibraryFilesAsync();

// For each file found ...
foreach (StorageFile file in files)
{
    // ... perform your processing.
}


Esta pantalla muestra un ejemplo de enumeración de 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.

Buscar en la muestra: la muestra incluye una página llamada File Access Basics (Conceptos básicos del acceso a archivos), que incluye los ejemplos presentados en esta sección. El código correspondiente de Visual C# y XAML se centraliza en los archivos FileAccessBasicsPage.xaml.cs(método OnEnumPicturesClick) y FileAccessBasicsPage.xaml, respectivamente, junto con el método de extensión del archivo FileHelper.cs.

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. En Inicio rápido: obtener las propiedades de un archivo se ilustra cómo recuperar y mostrar las propiedades de archivo de nivel superior y básicas.

Estos pasos muestran cómo obtener las propiedades de archivo de nivel superior, básicas y extendidas.

En este ejemplo de código se enumeran todos los archivos de Imágenes y muestra diversas propiedades de archivo de nivel superior, básicas y extendidas.



// Generic extension method that returns all files for the 
// specified KnownFolders location.
public static async Task<IReadOnlyList<StorageFile>> 
GetLibraryFilesAsync(this StorageFolder folder)
{
    var query = folder.CreateFileQuery();
    return await query.GetFilesAsync();
}

...

// Enumerate all files in the Pictures library.
var files = await KnownFolders.PicturesLibrary.GetLibraryFilesAsync();

// For each file found ...
foreach (StorageFile file in files)
{
    // Get top-level file properties.
    StringBuilder fileProperties = new StringBuilder();
    fileProperties.AppendLine("File name: " + file.Name);
    fileProperties.AppendLine("File type: " + file.FileType);

    // Get basic properties.
    BasicProperties basicProperties = await file.GetBasicPropertiesAsync();
    string fileSize = string.Format("{0:n0}", basicProperties.Size);
    fileProperties.AppendLine("File size: " + fileSize + " bytes");
    fileProperties.AppendLine("Date modified: " + basicProperties.DateModified);

    // Specify extended properties to be retrieved.
    List<string> propertiesName = new List<string>();
    propertiesName.Add(dateAccessedProperty);
    propertiesName.Add(fileOwnerProperty);

    // Get extended properties.
    IDictionary<string, object> extraProperties = 
        await file.Properties.RetrievePropertiesAsync(propertiesName);

    // Get LastDateAccessed property.
    var propValue = extraProperties[dateAccessedProperty];
    if (propValue != null)
    {
        fileProperties.AppendLine("Date accessed: " + propValue);
    }

    // Get FileOwner property.
    propValue = extraProperties[fileOwnerProperty];
    if (propValue != null)
    {
        fileProperties.AppendLine("File owner: " + propValue);
    }
}


Esta captura de pantalla muestra los resultados de consultar diversas propiedades de archivo.

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

Buscar en la muestra: la muestra incluye una página llamada File Access Basics (Conceptos básicos del acceso a archivos), que incluye los ejemplos presentados en esta sección. El código correspondiente de Visual C# y XAML se centraliza en los archivos FileAccessBasicsPage.xaml.cs (método OnGetFilePropertiesClick) y FileAccessBasicsPage.xaml, respectivamente, junto con el método de extensión del archivo FileHelper.cs.

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 obtener ejemplos de código que muestran cómo leer y escribir varios tipos de datos usando las clases FileIO y StorageFile.

Dn263198.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.
StorageFile sampleFile = 
    await KnownFolders.PicturesLibrary.CreateFileAsync(sampleFileName, 
        CreationCollisionOption.ReplaceExisting);

// Write the current timestamp to the sample file.
string sampleFileContents = DateTime.Now.ToString();
await FileIO.WriteTextAsync(sampleFile, sampleFileContents);


Dn263198.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.


// Get StorageFile object for sample file.
StorageFile sampleFile = 
    await KnownFolders.PicturesLibrary.GetFileAsync(sampleFileName);

if (sampleFile != null)
{
    // Read and display sample file's contents.
    string fileContent = await FileIO.ReadTextAsync(sampleFile);
}


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.

Buscar en la muestra: la muestra incluye una página llamada File Access Basics (Conceptos básicos del acceso a archivos), que incluye las muestras presentadas en esta sección. Todo el código relevante de Visual C# y XAML se centraliza en los archivos FileAccessBasicsPage.xaml.cs (métodos OnWriteTextToFileClick y OnReadTextFromFileClick) y los archivos FileAccessBasicsPage.xaml, respectivamente.

 

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 un selector de archivos o carpetas para varias tareas:

Dn263198.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 al método FileOpenPicker.PickSingleFileAsync. Cuando el método FileOpenPicker.PickSingleFileAsync esté completo, 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.


public static FileOpenPicker 
CreateFileOpenPicker(this PickerLocationId location, 
                     string[] filters)
{
    FileOpenPicker picker = new FileOpenPicker()
    {
        SuggestedStartLocation = location,
        ViewMode = PickerViewMode.Thumbnail
    };
    foreach (string filter in filters)
    {
        picker.FileTypeFilter.Add(filter);
    }

    return picker;
}

...

// Instantiate/configure picker object.
FileOpenPicker openPicker = 
    PickerLocationId.PicturesLibrary.CreateFileOpenPicker(new string[] 
    { ".jpg", ".jpeg", ".png" });

// Display picker and allow user to select a single file.
StorageFile file = await openPicker.PickSingleFileAsync();

// If the user selected a file ...
if (file != null)
{
    // ... process file as needed.
}
else
{
    // User canceled the operation.
}


Dn263198.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 ViewMode, SuggestedStartLocation y FileTypeFilter del objeto FileOpenPicker, según las necesites.
  3. Llama al método FileOpenPicker.PickMultipleFilesAsync. Cuando el método FileOpenPicker.PickMultipleFilesAsync esté completo, la aplicación tendrá acceso de lectura/escritura a los archivos seleccionados. Los archivos seleccionados se representan mediante una colección IReadOnlyList. Esta colección se puede iterar mediante un bucle foreach.
Este código de ejemplo crea y muestra un selector de archivos para seleccionar varios archivos.


public static FileOpenPicker 
CreateFileOpenPicker(this PickerLocationId location, 
                     string[] filters)
{
    FileOpenPicker picker = new FileOpenPicker()
    {
        SuggestedStartLocation = location,
        ViewMode = PickerViewMode.Thumbnail
    };
    foreach (string filter in filters)
    {
        picker.FileTypeFilter.Add(filter);
    }

    return picker;
}

...

// Instantiate/configure picker object.
FileOpenPicker openPicker = 
    PickerLocationId.PicturesLibrary.CreateFileOpenPicker(new string[] 
    { ".jpg", ".jpeg", ".png" });

// Display picker and allow user to select multiple files.
IReadOnlyList<StorageFile> files = await openPicker.PickMultipleFilesAsync();

// For each selected file ...
foreach (StorageFile file in files)
{
    // ... process file as needed.
}


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

  1. Crea una instancia del objeto FolderPicker.
  2. Establece las propiedades ViewMode, SuggestedStartLocation y FolderPicker.FileTypeFilter del objeto FolderPicker, según las necesites.
  3. Llama al método FolderPicker.PickSingleFolderAsync, que devuelve un objeto StorageFolderque representa la carpeta seleccionada. Cuando el método FolderPicker.PickSingleFolderAsync se complete, la aplicación tendrá acceso de lectura/escritura a todo el contenido de la carpeta seleccionada, incluidas las subcarpetas.
Este ejemplo de código crea una instancia de un selector de carpetas y lo muestra.

        
public static FolderPicker 
CreateFolderOpenPicker(this PickerLocationId location, 
                       string[] filters)
{
    FolderPicker picker = new FolderPicker()
    {
        SuggestedStartLocation = location,
        ViewMode = PickerViewMode.Thumbnail
    };
    foreach (string filter in filters)
    {
        picker.FileTypeFilter.Add(filter);
    }

    return picker;
}

...

// Instantiate/configure picker object.
FolderPicker folderPicker = 
    PickerLocationId.Desktop.CreateFolderOpenPicker(new string[] 
    { ".jpg", ".jpeg", ".png" });

// Display picker and allow user to select a folder.
StorageFolder folder = await folderPicker.PickSingleFolderAsync();

// If the user selected a folder ...
if (folder != null)
{
    // ... process file 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.

Buscar en la muestra: la muestra incluye una página titulada File Picker (Selector de archivos), que muestra las tareas que se detallan en esta sección (para selectores de archivos y de carpetas). El código de Visual C# y XAML para esta muestra se encuentra en los archivos FilePickerPage.xaml.cs y FilePickerPage.xaml, respectivamente, junto con los métodos auxiliares en el archivo FileHelper.cs.

 

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 hacerlo haciendo referencia a una de las propiedades estáticas de KnownFolders, como KnowFolders.PicturesLibrary.
  2. Después, llama al método StorageFolder.CreateFileQuery del objeto StorageFolder devuelto sin parámetros e indica que quieres todas las carpetas y todos los archivos que se han devuelto.
  3. Cuando se devuelve la llamada a StorageFolder.CreateFileQuery, tendrás un objeto StorageFileQueryResult. Llama a su método GetFilesAsync.
  4. El método StorageFileQueryResult.GetFilesAsync devuelve una colección IReadOnlyList de objetos StorageFile que se puede iterar con un bucle foreach.
  5. Haz referencia a la propiedad booleana StorageFile.IsAvailable.
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.


// Generic extension method that returns all files for the 
// specified KnownFolders location.
public static async Task<IReadOnlyList<StorageFile>> 
GetLibraryFilesAsync(this StorageFolder folder)
{
    var query = folder.CreateFileQuery();
    return await query.GetFilesAsync();
}

...

// Display file list with storage provider and availability.
var files = await KnownFolders.PicturesLibrary.GetLibraryFilesAsync();
foreach (StorageFile file in files)
{
    // Reference the file.IsAvailable property as needed.
}   


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

Buscar en la muestra: la muestra incluye una página titulada OneDrive Files (Archivos de OneDrive), que contiene un botón que enumera todos los archivos de la biblioteca Imágenes del equipo local. Se muestra el nombre de cada archivo, junto con el proveedor correspondiente (Este PC o OneDrive) y si está disponible. El código de Visual C# y XAML para esta muestra se encuentra en los archivos OneDriveFilesPage.xaml.cs y OneDriveFilesPage.xaml, respectivamente, junto con los métodos auxiliares en el archivo FileHelper.cs.

 

Ú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: Usar el operador await para la programación asincrónica

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

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

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

Inicio rápido: obtener las propiedades de un archivo

Más información sobre cómo recuperar las propiedades de nivel superior, básicas y extendidas de un archivo.

Inicio rápido: Lectura y escritura de archivos

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

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

Más información sobre cómo determinar si un archivo está disponible.

 

 

Mostrar:
© 2015 Microsoft