matlab.io.datastore.BlockedFileSet
包含文件中的一组文件块的分块文件集
说明
matlab.io.datastore.BlockedFileSet
对象可帮助您在以迭代方式遍历文件时处理文件中的大量分块。可将 BlockedFileSet
对象和 DsFileReader
对象结合使用,来管理和读取数据存储中的文件。
创建对象
语法
描述
根据指定的位置为文件中的大量分块创建一个 bs
= matlab.io.datastore.BlockedFileSet(location
)BlockedFileSet
对象。
指定文件扩展名、子文件夹或设置对象属性。您可以指定多个名称-值对组。用引号将名称括起来。bs
= matlab.io.datastore.BlockedFileSet(location
,Name,Value
)
输入参量
要包括在 BlockedFileSet
对象中的文件或文件夹,指定为字符向量、字符向量元胞数组、字符串数组或结构体。如果这些文件不在当前文件夹中,则 location
必须是完整或相对路径。指定文件夹的子文件夹中的文件不会自动包括在 BlockedFileSet
对象中。
通常,对于 Hadoop® 工作流来说,如果您将 location
指定为结构体,则它必须包含 FileName
、Offset
和 Size
字段。此要求使您可以将 location
参量直接用于 matlab.io.datastore.HadoopLocationBased
类的 initializeDatastore
方法。有关示例,请参阅Add Support for Hadoop。
指定 location
时可以使用通配符 (*)。指定此字符会将所有匹配的文件或者匹配文件夹中的所有文件都包括在文件集对象中。
如果文件在本地不可用,则文件或文件夹的完整路径必须为统一资源定位器 (URL),例如
hdfs://
。hostname
:portnumber
/path_to_file
数据类型: char
| cell
| string
| struct
名称-值参数
以 Name1=Value1,...,NameN=ValueN
的形式指定可选参量对组,其中 Name
是参量名称,Value
是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: bs = matlab.io.datastore.BlockedFileSet(location,'IncludeSubfolders',true)
文件扩展名,指定为字符向量、字符向量元胞数组或字符串数组。可以使用空引号 ''
表示不带扩展名的文件。
如果未指定 'FileExtensions'
,则 BlockedFileSet
自动包含所有文件扩展名。
示例: 'FileExtensions','.jpg'
示例: 'FileExtensions',{'.txt','.csv'}
子文件夹包含标志,指定为数值或逻辑值 1
(true
) 或 0
(false
)。指定 true
可包含每个文件夹中的所有文件和子文件夹,指定 false
则仅包含每个文件夹中的文件。
示例: 'IncludeSubfolders',true
属性
用于分割文件信息的分块大小(以字节为单位),指定为下列值之一:
'file'
- 使用集合中下一个文件的大小。数值标量 - 使用指定的值(以字节为单位)。
示例: 'BlockSize',2000
备用文件系统根路径,指定为字符串数组或元胞数组。当您在本地计算机上创建数据存储,但需要访问和处理另一台计算机(可能是不同操作系统)上的数据时,请使用 '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
此 属性 为只读。
分块文件集对象中的分块数,指定为数值标量。
示例: bs.NumBlocks
数据类型: double
此 属性 为只读。
从 BlockedFileSet
对象读取的分块数,指定为数值标量。
示例: bs.NumBlocksRead
数据类型: double
此 属性 为只读。
有关 matlab.io.datastore.BlockedFileSet
对象中分块的信息,以 matlab.io.datastore.BlockedInfo
对象形式返回,具有以下属性:
Filename
-BlockedFileSet
对象中文件的名称。该名称包含文件的完整路径。FileSize
- 文件的大小(以字节为单位)。Offset
- 要读取的文件内的起始偏移量。BlockSize
- 分块的大小(以字节为单位)。
如需有关特定分块的信息,请指定分块索引。例如,bs.BlockInfo(2)
返回第二个分块的信息。如果在指定 (:)
或不指定索引的情况下调用 bs.BlockInfo
,它将返回所有模块的信息。
示例: bs.BlockInfo(2)
对象函数
hasPreviousBlock | 确定分块文件集是否有上一个分块 |
previousblock | 关于分块文件集中上一个分块的信息 |
hasNextBlock | 确定分块文件集是否有其他分块 |
nextblock | 有关分块文件集中下一个分块的信息 |
progress | 确定已读取多少分块或文件 |
maxpartitions | 最大分区数 |
partition | 划分文件集对象 |
subset | 创建数据存储或 FileSet 的子集 |
reset | 重置文件集对象 |
示例
创建分块文件集,并查询分块文件集中特定分块的信息。
为一组文件创建一个分块文件集 bs
,并指定分块大小。
folder = {'accidents.mat','airlineResults.mat','census.mat','earth.mat'}
folder = 1×4 cell
{'accidents.mat'} {'airlineResults.mat'} {'census.mat'} {'earth.mat'}
bs = matlab.io.datastore.BlockedFileSet(folder,'BlockSize',2000)
bs = BlockedFileSet with properties: NumBlocks: 98 NumBlocksRead: 0 BlockSize: 2000 BlockInfo: Show BlockInfo for all 98 blocks AlternateFileSystemRoots: {}
使用 nextblock
函数或通过查询 BlockInfo
属性并指定索引来获取特定分块的信息。使用 nextblock
获取连续分块的信息。例如,获取分块文件集中前两个分块的信息。
blk1 = nextblock(bs)
blk1 = 1×1 BlockInfo Filename FileSize Offset BlockSize _________________________________________________________________________________________________________________ ________ ______ _________ "/mathworks/devel/bat/filer/batfs2566-0/Bdoc25a.2974004/build/runnable/matlab/toolbox/matlab/demos/accidents.mat" 7343 0 2000
blk2 = nextblock(bs)
blk2 = 1×1 BlockInfo Filename FileSize Offset BlockSize _________________________________________________________________________________________________________________ ________ ______ _________ "/mathworks/devel/bat/filer/batfs2566-0/Bdoc25a.2974004/build/runnable/matlab/toolbox/matlab/demos/accidents.mat" 7343 2000 2000
查询 BlockInfo
属性,获取有关分块文件集中最后一个分块的信息。
lastblk = bs.BlockInfo(98)
lastblk = 1×1 BlockInfo Filename FileSize Offset BlockSize _____________________________________________________________________________________________________________ ________ ______ _________ "/mathworks/devel/bat/filer/batfs2566-0/Bdoc25a.2974004/build/runnable/matlab/toolbox/matlab/demos/earth.mat" 32522 32000 522
版本历史记录
在 R2020a 中推出
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)