LINQ e os diretórios de arquivos
Muitas operações de sistema de arquivos são essencialmente consultas e, portanto, são adequadas para o LINQ abordagem.
Observação |
---|
Se você quiser realizar consultas programáticas com relação ao conteúdo de vários tipos de arquivos e documentos, considere o uso de Windows Desktop Search Engine. Embora atualmente não pode ser consultada com LINQ, ele oferece um poderoso serviço de indexação que gerencia com eficiência as complexidades do sistema de arquivo. |
Observe que as consultas nesta seção são não destrutivas. Eles não são usados para alterar o conteúdo dos arquivos originais ou pastas. Isso segue a regra de consultas não devem causar efeitos colaterais. Em geral, qualquer código (incluindo consultas que realizam criar / atualizar / excluir operadores) que modifica os dados de origem deve ser mantido separado do código que consulta apenas os dados.
Esta seção contém os seguintes tópicos:
Como: Consulta de arquivos com um nome ou o atributo especificado
Mostra como procurar arquivos examinando uma ou mais propriedades de sua FileInfo objeto.Como: Agrupar arquivos por extensão (LINQ)
Mostra como retornar a grupos de FileInfo objeto baseado em sua extensão de nome de arquivo.Como: Consulta para o número Total de Bytes em um conjunto de pastas (LINQ)
Mostra como retornar o número total de bytes de todos os arquivos em uma árvore de diretório especificada.Como: Comparar o conteúdo das duas pastas (LINQ)s
Mostra como retornar todos os arquivos que estão presentes nas duas pastas especificadas, e também todos os arquivos que estão presentes em uma pasta, mas não na outra.Como: Consulta do maior arquivo ou arquivos em uma árvore de diretório (LINQ)
Mostra como retornar o arquivo maior ou menor ou um número especificado de arquivos, em uma árvore de diretório.Como: Consulta para os arquivos duplicados em uma árvore de diretório (LINQ)
Mostra como agrupar todos os nomes de arquivos que ocorrem em mais de um local em uma árvore de diretório especificada. Também mostra como realizar comparações mais complexas, com base em um comparador personalizado.Como: Consultar o conteúdo dos arquivos em uma pasta (LINQ)
Mostra como percorrer pastas em uma árvore, abrir cada arquivo e consultar o conteúdo do arquivo.
Comentários
Há alguma espécie de complexidade envolvidas na criação de uma fonte de dados que representa o conteúdo do sistema de arquivos e manipula as exceções normalmente com precisão. Os exemplos nesta seção criam uma coleção de instantâneo de FileInfo os objetos que representa todos os arquivos em uma pasta raiz especificada e todas as suas subpastas. O estado real de cada FileInfo podem ser alteradas no período entre quando você começa e termina a execução de uma consulta. Por exemplo, você pode criar uma lista de FileInfo objetos para usar como uma fonte de dados. Se você tentar acessar a Length propriedade em uma consulta, o FileInfo objeto tentará acessar o sistema de arquivos para atualizar o valor de Length. Se o arquivo não existir mais, você receberá uma FileNotFoundException em sua consulta, mesmo que você está não consultando o sistema de arquivos diretamente. Algumas consultas nesta seção usam um método separado que consome essas exceções específicas em determinados casos. Outra opção é manter a sua fonte de dados atualizado dinamicamente usando o FileSystemWatcher.