Compartilhar via


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çãoObservaçã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:

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.

Consulte também

Conceitos

LINQ to Objects