LINQ e diretórios de arquivos (Visual Basic)LINQ and File Directories (Visual Basic)

Muitas operações do sistema de arquivos são essencialmente consultas e, portanto, são ideais para a abordagem do LINQ.Many file system operations are essentially queries and are therefore well-suited to the LINQ approach.

Observe que as consultas nesta seção são não destrutivas.Note that the queries in this section are non-destructive. Elas não são usadas para alterar o conteúdo dos arquivos ou pastas originais.They are not used to change the contents of the original files or folders. Isso segue a regra de que consultas não devem causar efeitos colaterais.This follows the rule that queries should not cause any side-effects. Em geral, qualquer código (incluindo consultas que executam operadores criar / atualizar / excluir) que modifique dados de origem deve ser mantido separado do código que apenas consulta os dados.In general, any code (including queries that perform create / update / delete operators) that modifies source data should be kept separate from the code that just queries the data.

Esta seção contém os seguintes tópicos:This section contains the following topics:

Como consultar arquivos com um atributo ou nome especificado (Visual Basic)How to: Query for Files with a Specified Attribute or Name (Visual Basic)
Mostra como pesquisar arquivos, examinando uma ou mais propriedades de seu objeto FileInfo.Shows how to search for files by examining one or more properties of its FileInfo object.

Como: agrupar arquivos por extensão (LINQ) (Visual Basic)How to: Group Files by Extension (LINQ) (Visual Basic)
Mostra como retornar grupos de objetos FileInfo com base em sua extensão de nome de arquivo.Shows how to return groups of FileInfo object based on their file name extension.

Como consultar o número total de bytes em um conjunto de pastas (LINQ) (Visual Basic)How to: Query for the Total Number of Bytes in a Set of Folders (LINQ) (Visual Basic)
Mostra como retornar o número total de bytes em todos os arquivos de uma árvore de diretórios especificada.Shows how to return the total number of bytes in all the files in a specified directory tree.

Como comparar o conteúdo de duas pastas (LINQ) (Visual Basic)sHow to: Compare the Contents of Two Folders (LINQ) (Visual Basic)s
Mostra como retornar todos os arquivos que estão presentes em duas pastas especificadas e também todos os arquivos que estão presentes em uma pasta, mas não na outra.Shows how to return all the files that are present in two specified folders, and also all the files that are present in one folder but not the other.

Como consultar o maior arquivo ou arquivos em uma árvore de diretório (LINQ) (Visual Basic)How to: Query for the Largest File or Files in a Directory Tree (LINQ) (Visual Basic)
Mostra como retornar o maior ou o menor arquivo ou um número especificado de arquivos, em uma árvore de diretório.Shows how to return the largest or smallest file, or a specified number of files, in a directory tree.

Como consultar arquivos duplicados em uma árvore de diretório (LINQ) (Visual Basic)How to: Query for Duplicate Files in a Directory Tree (LINQ) (Visual Basic)
Mostra como agrupar todos os nomes de arquivo que ocorrem em mais de um local em uma árvore de diretórios especificada.Shows how to group for all file names that occur in more than one location in a specified directory tree. Também mostra como realizar comparações mais complexas com base em um comparador personalizado.Also shows how to perform more complex comparisons based on a custom comparer.

Como consultar o conteúdo de arquivos em uma pasta (LINQ) (Visual Basic)How to query the contents of files in a folder (LINQ) (Visual Basic)
Mostra como iterar pelas pastas em uma árvore, abrir cada arquivo e consultar o conteúdo do arquivo.Shows how to iterate through folders in a tree, open each file, and query the file's contents.

ComentáriosComments

Há certa complexidade envolvida na criação de uma fonte de dados que representa o conteúdo do sistema de arquivos com precisão e trata exceções de maneira elegante.There is some complexity involved in creating a data source that accurately represents the contents of the file system and handles exceptions gracefully. Os exemplos nesta seção criam uma coleção de instantâneos de objetos FileInfo que representa todos os arquivos em uma pasta raiz especificada e todas as suas subpastas.The examples in this section create a snapshot collection of FileInfo objects that represents all the files under a specified root folder and all its subfolders. O estado real de cada FileInfo pode ser alterado no tempo entre o momento em que você começa e termina a execução de uma consulta.The actual state of each FileInfo may change in the time between when you begin and end executing a query. Por exemplo, você pode criar uma lista de objetos FileInfo para usar como uma fonte de dados.For example, you can create a list of FileInfo objects to use as a data source. Se você tentar acessar a propriedade Length em uma consulta, o objeto FileInfo tentará acessar o sistema de arquivos para atualizar o valor de Length.If you try to access the Length property in a query, the FileInfo object will try to access the file system to update the value of Length. Se o arquivo não existir, você obterá uma FileNotFoundException em sua consulta, embora não esteja consultando diretamente o sistema de arquivos.If the file no longer exists, you will get a FileNotFoundException in your query, even though you are not querying the file system directly. Algumas consultas nesta seção usam um método separado que consome essas exceções específicas em determinados casos.Some queries in this section use a separate method that consumes these particular exceptions in certain cases. Outra opção é manter a fonte de dados atualizada dinamicamente usando o FileSystemWatcher.Another option is to keep your data source updated dynamically by using the FileSystemWatcher.

Consulte tambémSee also