Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

matlab.io.datastore.FileSet

数据存储中文件集合的文件集

说明

matlab.io.datastore.FileSet 对象可帮助您在以迭代方式遍历文件时处理大型文件集合。可将 FileSet 对象和 DsFileReader 对象结合使用,来管理和读取数据存储中的文件。

创建对象

说明

示例

fs = matlab.io.datastore.FileSet(location) 根据指定的位置为大型文件集合创建一个 FileSet 对象。

fs = matlab.io.datastore.FileSet(location,Name,Value) 指定文件扩展名、是否包括子文件夹或设置对象属性。您可以指定多个名称-值对组。用引号将名称括起来。

输入参数

全部展开

要包括在 FileSet 对象中的文件或文件夹,指定为字符向量、字符向量元胞数组、字符串数组或结构体。如果这些文件不在当前文件夹中,则 location 必须是完整或相对路径。指定文件夹的子文件夹中的文件不会自动包括在 FileSet 对象中。

通常,对于 Hadoop® 工作流来说,如果您将 location 指定为结构体,则它必须包含 FileNameOffsetSize 字段。此要求使您可以将 location 参数直接用于 matlab.io.datastore.HadoopLocationBased 类的 initializeDatastore 方法。有关示例,请参阅Add Support for Hadoop

指定 location 时可以使用通配符 (*)。指定此字符会将所有匹配的文件或者匹配文件夹中的所有文件都包括在文件集对象中。

如果文件在本地不可用,则文件或文件夹的完整路径必须为统一资源定位器 (URL),例如
hdfs://hostname:portnumber/path_to_file

数据类型: char | cell | string | struct

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: fs = matlab.io.datastore.FileSet(location,'IncludeSubfolders',true)

子文件夹包含标志,指定为数值或逻辑值 1 (true) 或 0 (false)。指定 true 可包含每个文件夹中的所有文件和子文件夹,指定 false 则仅包含每个文件夹中的文件。

示例: 'IncludeSubfolders',true

文件扩展名,指定为字符向量、字符向量元胞数组或字符串数组。可以使用空引号 '' 表示不带扩展名的文件。

如果未指定 'FileExtensions',则 BlockedFileSet 自动包含所有文件扩展名。

示例: 'FileExtensions','.jpg'

示例: 'FileExtensions',{'.txt','.csv'}

属性

全部展开

备用文件系统根路径,指定为字符串数组或元胞数组。当您在本地计算机上创建数据存储,但需要访问和处理另一台计算机(可能是不同操作系统)上的数据时,请使用 'AlternateFileSystemRoots'。此外,如果您使用 Parallel Computing Toolbox™ 和 MATLAB® Parallel Server™ 处理数据,而数据存储在本地计算机上并且在不同平台云或集群计算机上存储数据副本,则必须使用 'AlternateFileSystemRoots' 关联根路径。

  • 要关联一组等效的根路径,请将 'AlternateFileSystemRoots' 指定为字符串数组。例如,

    ["Z:\datasets","/mynetwork/datasets"]

  • 要将在数据存储方面等效的多组根路径关联起来,请将 'AlternateFileSystemRoots' 指定为包含多个行的元胞数组,其中每一行代表一组等效的根路径。将元胞数组中的每一行指定为一个字符串数组或字符向量元胞数组。例如:

    • 'AlternateFileSystemRoots' 指定为字符串数组构成的元胞数组。

      {["Z:\datasets", "/mynetwork/datasets"];...
       ["Y:\datasets", "/mynetwork2/datasets","S:\datasets"]}

    • 也可以将 'AlternateFileSystemRoots' 指定为字符向量元胞数组。

      {{'Z:\datasets','/mynetwork/datasets'};...
       {'Y:\datasets', '/mynetwork2/datasets','S:\datasets'}}

'AlternateFileSystemRoots' 的值必须满足以下条件:

  • 包含一行或多行,每一行指定一组等效的根路径。

  • 每一行指定多个根路径,每个根路径必须至少包含两个字符。

  • 根路径是唯一的,并且不是彼此的子文件夹。

  • 包含至少一个指向文件位置的根路径条目。

有关详细信息,请参阅Set Up Datastore for Processing on Different Machines or Clusters

示例: ["Z:\datasets","/mynetwork/datasets"]

数据类型: string | cell

此属性为只读

文件集对象中的文件数,指定为数值标量。

示例: fs.NumFiles

数据类型: double

此属性为只读

FileSet 对象读取的文件数,指定为数值标量。

示例: fs.NumFilesRead

数据类型: double

此属性为只读

有关 FileSet 对象中文件的信息,以 FileInfo 对象形式返回,具有以下属性:

  • Filename - FileSet 对象中文件的名称。该名称包含文件的完整路径。

  • FileSize - 文件的大小(以字节为单位)。

如需有关特定文件的信息,请指定文件索引。例如,fs.FileInfo(2) 返回第二个文件的文件名和文件大小。如果您在没有指定索引的情况下调用 fs.FileInfo,它将返回所有文件的信息。

示例: fs.FileInfo(2)

对象函数

hasNextFile 确定文件集中是否有其他文件
nextfile 下一个文件或文件块的信息
hasPreviousFile 确定文件集是否有上一个文件
previousfile 关于文件集中上一个文件的信息
progress 确定已读取多少分块或文件
maxpartitions 最大分区数
partition 划分文件集对象
subset创建数据存储或文件集的子集
reset 重置文件集对象

示例

全部折叠

创建一个文件集并查询文件集中特定文件的信息。

为一组文件创建一个文件集 fs

folder = {'accidents.mat','airlineResults.mat','census.mat','earth.mat'}
folder = 1x4 cell
  Columns 1 through 3

    {'accidents.mat'}    {'airlineResults...'}    {'census.mat'}

  Column 4

    {'earth.mat'}

fs = matlab.io.datastore.FileSet(folder)
fs = 
  FileSet with properties:

                    NumFiles: 4
                NumFilesRead: 0
                    FileInfo: Show FileInfo for all 4 files
    AlternateFileSystemRoots: {}

使用 nextfile 函数或通过查询 FileInfo 属性并指定索引来获取特定文件的信息。使用 nextfile 获取连续文件的信息。例如,获取文件集中前两个文件的信息。

file1 = nextfile(fs)
file1 = 
  1x1 FileInfo
                                       Filename                                       FileSize
    ______________________________________________________________________________    ________

    "/mathworks/devel/bat/Bdoc21a/build/matlab/toolbox/matlab/demos/accidents.mat"      7343  

file2 = nextfile(fs)
file2 = 
  1x1 FileInfo
                                         Filename                                           FileSize 
    ___________________________________________________________________________________    __________

    "/mathworks/devel/bat/Bdoc21a/build/matlab/toolbox/matlab/demos/airlineResults.mat"    1.5042e+05

查询 FileInfo 属性以获取有关该文件集中最后一个文件的信息。

lastfile = fs.FileInfo(4)
lastfile = 
  1x1 FileInfo
                                     Filename                                     FileSize
    __________________________________________________________________________    ________

    "/mathworks/devel/bat/Bdoc21a/build/matlab/toolbox/matlab/demos/earth.mat"     32522  

在 R2020a 中推出