LINQ e 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 fornece um poderoso serviço de indexação que gerencia com eficiência as complexidades do sistema de arquivos. |
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 que 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 seu 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: consultar o maior arquivo ou arquivos em uma árvore de diretórios (LINQ)
Mostra como retornar um número especificado de arquivos, ou o arquivo maior ou menor em uma árvore de diretório.Como: consulta por 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: consulta 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 envolvida 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 objetos que representam 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 fonte de dados.Se você tentar acessar a Length propriedade em uma consulta, o FileInfo objeto irá 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.