Aplicativos do Windows
Recolher sumário
Expandir sumário

Como obter arquivos e pastas de um local (aplicativos estilo Metro usando JavaScript e HTML)

[Esta documentação é preliminar e está sujeita a alterações.]

Obter arquivos e pastas que estão em um local específico como uma pasta, biblioteca, dispositivo ou local de rede.

Pré-requisitos

Obter a pasta continente

Se você deseja obter uma lista de conteúdo de uma pasta específica, você precisa primeiro obter a pasta.

A amostra FolderEnumeration na Home page de amostra de aplicativos estilo Metro obtém a Biblioteca de imagens:


var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;

No exemplo anterior, usamos KnownFolders para obter a biblioteca de Imagens (como um objeto StorageFolder). Você pode usar propriedades KnownFolders para obter pastas que representam um número de recursos do usuário como bibliotecas, dispositivos ou locais de rede.

Importante  Se você quer usar uma propriedade KnownFolders para acessar uma biblioteca, um dispositivo ou um local de rede, o seu aplicativo deve ter o recurso correspondente em seu manifesto de aplicativo. Aprenda mais sobre os recursos em Acessar os recursos do usuário usando o Windows Runtime e Início Rápido: Trabalhando com arquivos.

Obter uma lista de conteúdo de pastas

A amostra FolderEnumeration na Home page de amostra de aplicativos estilo Metro obtém uma lista de itens na Biblioteca de imagens:


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

Conforme apresentado no exemplo anterior, você pode chamar getItemsAsync() para obter uma lista de todos os conteúdos da pasta (um StorageFolder objeto). Se você não deseja todos os itens, é possível chamar getItemsAsync(startIndex, maxItemsToRetrieve) para obter o conteúdo da pasta de forma simples, pelo índice.

Quando você chama um método getItemsAsync em uma pasta, a lista de itens recebidos é limitada aos arquivos e subpastas nesta pasta e não inclui arquivos e pastas contidos nas subpastas.

Se você deseja uma lista dos arquivos em uma pasta, é possível chamar um método getFilesAsync. Se você deseja uma lista de pastas, é possível chamar um método getFoldersAsync.

Use then após obter a operação para definir uma função que considera a lista de objetos que você recebe, items no exemplo anterior e execute as tarefas adicionais que você precisa.

Trabalhando com a lista

A amostra FolderEnumeration na Home page de amostra de aplicativos estilo Metro executa tarefas adicionais com a lista de items na Biblioteca de imagens:



    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); 
        } 
    });

O exemplo anterior passa o name da pasta e o size da lista para uma função auxiliar que exibe essa informação ao usuário.

Você também pode iterar na lista de itens para executar tarefas adicionais, conforme apresentado no exemplo anterior. Você também pode chamar forEach na lista de itens para iterar através de itens na lista. A função que você passa para forEach deve considerar um item da lista como um argumento, e será executado para cada item na lista.

Você pode processar cada item posteriormente, chamando os métodos nos mesmos individualmente. No exemplo anterior, determinamos se um item é uma pasta objeto (StorageFolder) ou um arquivo (objeto StorageFile) , comparando o resultado do método isOfType, presente nos arquivos e pastas, com valor enum StorageItemTypes. Usamos essa comparação para passar diferentes informações sobre o item para a função auxiliar output, mas você também pode executar algumas tarefas adicionais.

Para mais contexto e para ver como as funções outputHeader e output funcionam, faça o download da amostra FolderEnumeration na Home page de amostra de aplicativos estilo Metro.

Exemplo completo



// 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); 
        } 
    }); 
});

Tópicos relacionados

Acessando dados de arquivos
Como obter listas classificadas de arquivos
Guia rápido: Trabalhando com arquivos
Acessar os recursos de usuário usando o tempo de execução do Windows
Home page de amostra de aplicativos estilo Metro
Referência
Windows.Storage.KnownFolders class
Windows.Storage.StorageFile class
Windows.Storage.StorageFolder class
Windows.Storage.StorageItemTypes enum

 

 

Mostrar:
© 2017 Microsoft