LINQ 和文件目录 (Visual Basic)

许多文件系统操作本质上是查询操作,因此非常适合使用 LINQ 方法。

请注意,本节中的查询是非破坏性的。 它们不用于更改原始文件或文件夹的内容。 这遵循了查询不应引起任何副作用的规则。 通常,修改源数据的任何代码(包括执行创建/更新/删除运算符的查询)都应与仅查询数据的代码分开。

本节包含以下主题:

如何:查询具有指定属性或名称的文件(Visual Basic)
演示如何通过检查其 FileInfo 对象的一个或多个属性来搜索文件。

如何:按扩展对文件进行分组 (LINQ) (Visual Basic)
演示如何基于对象的文件扩展名返回对象组 FileInfo

如何:查询一组文件夹中的总字节数(LINQ)(Visual Basic)
演示如何返回指定目录树中所有文件中的总字节数。

如何:比较两个文件夹(LINQ)(Visual Basic)的内容
演示如何返回两个指定文件夹中存在的所有文件,以及一个文件夹中存在但不返回另一个文件夹中的所有文件。

如何查询目录树中最大文件或多个文件(使用 LINQ 和 Visual Basic)
演示如何在目录树中返回最大或最小文件或指定数量的文件。

如何:查询目录树中的重复文件 (LINQ) (Visual Basic)
演示如何将指定目录树中在多个位置出现的所有文件名进行分组。 此外,还演示如何基于自定义比较器执行更复杂的比较。

如何查询文件夹中文件的内容(LINQ)(Visual Basic)
演示如何循环访问树中的文件夹、打开每个文件以及查询文件的内容。

注释

创建数据源涉及一些复杂性,该数据源准确表示文件系统的内容并正常处理异常。 本节中的示例创建对象快照集合,该集合 FileInfo 表示指定根文件夹及其所有子文件夹下的所有文件。 每个 FileInfo 项的实际状态可能会在开始和结束执行查询之间的时间发生更改。 例如,可以创建要用作数据源的对象列表 FileInfo 。 如果尝试访问 Length 查询中的属性,该 FileInfo 对象将尝试访问文件系统以更新值 Length。 如果文件不再存在,则即使您未直接查询文件系统,您的查询中仍会得到FileNotFoundException。 本部分中的一些查询使用不同的方法,在某些情况下使用该方法不会出现这些特定异常。 另一种选择是使用 FileSystemWatcher 动态更新您的数据源。

另请参阅