Partilhar via


O LINQ e arquivo diretórios

Muitos arquivo operações do sistema são essencialmente consultas e, portanto, são adequadas à LINQ abordagem.

Observação:

Se você deseja para executar através de programação consultas com o Sumário de vários tipos de arquivos e documentos, considere a possibilidade de usar o Windows área de trabalho Pesquisar Engine.Embora atualmente não pode ser consultada com LINQ, ele fornece um serviço de indexação potente que gerencia com eficiência as complexidades do arquivo sistema.

Observe que as consultas nesta seção são não-destrutivas.Eles não são usados para alterar o Sumário 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 / atualização /excluir operadores) que modifica os dados devem ser mantidos separados do código que consulta apenas os dados de fonte.

Esta seção contém os seguintes tópicos:

Comentários

Há alguma complexidade envolvidos na criação de uma fonte de dados que representa com precisão o Sumário do arquivo sistema e normalmente manipula as exceções.Os exemplos nesta seção criar uma coleção de instantâneo de FileInfo objetos que representa todos os arquivos em uma pasta raiz especificada e todas as suas subpastas. O estado real de cada FileInfo podem ser alterados no time entre quando você começar e terminar a execução de uma consulta. Por exemplo, você pode criar uma lista de FileInfo objetos para usar sistema autônomo uma fonte de dados. Se você tentar acessar o 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á um FileNotFoundException na 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 para Objetos