Main Content

matlab.io.datastore.DsFileSet クラス

名前空間: matlab.io.datastore

データストア内のファイルの集合用ファイルセット オブジェクト

説明

DsFileSet オブジェクトは、大規模なファイルの集合の反復処理を管理する上で役立ちます。DsFileSet オブジェクトを DsFileReader オブジェクトと共に使用して、データストアのファイルを管理し、読み取ります。

構築

fs = matlab.io.datastore.DsFileSet(location) は、指定された location に基づいてファイルの集合の DsFileSet オブジェクトを返します。

fs = matlab.io.datastore.DsFileSet(location,Name,Value) は、1 つ以上の名前と値のペアの引数を使用して DsFileSet オブジェクトの追加のパラメーターを指定します。Name はプロパティ名にすることもでき、Value は対応する値です。Name は一重引用符 ('') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順番で指定できます。

入力引数

すべて展開する

ファイルセット オブジェクトに含めるファイルまたはフォルダー。文字ベクトル、文字ベクトルの cell 配列、string または struct として指定します。ファイルが現在のフォルダーに存在しない場合、location は絶対パスまたは相対パスでなければなりません。指定したフォルダーのサブフォルダー内にあるファイルは、自動ではファイルセット オブジェクトに含まれません。

通常、Hadoop® ワークフローで location を struct として指定する場合、FileNameOffset、および Size フィールドが含まれていなければなりません。この要件により、matlab.io.datastore.HadoopLocationBased クラスの initializeDatastore メソッドで直接 location 引数を使用できるようになります。例については、Hadoop サポートの追加を参照してください。

location を指定するときにワイルドカード文字 (*) を使用できます。この文字を指定すると、一致するすべてのファイルまたは一致するフォルダー内のすべてのファイルがファイル セット オブジェクトに含められます。

ローカルで使用できないファイルについては、次のような Uniform Resource Locator (URL) を使用してファイルまたはフォルダーの絶対パスを指定しなければなりません。
hdfs://hostname:portnumber/path_to_file

データ型: char | cell | string | struct

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: 'FileExtensions',{'.jpg','.tif'} は、.jpg または .tif 拡張子をもつすべてのファイルを FileSet オブジェクトに含めます。

ファイル拡張子。'FileExtensions' と、文字ベクトル、文字ベクトルの cell 配列、または string で構成されるコンマ区切りのペアとして指定します。空の引用符 '' を使用して、拡張子のないファイルを表すことができます。

'FileExtensions' を指定しない場合、DsFileSet は自動的にすべてのファイル拡張子を含めます。

例: 'FileExtensions','.jpg'

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

データ型: char | cell | string

サブフォルダーを含めるかどうかのフラグ。'IncludeSubfolders' と、true または false のいずれかで構成されるコンマ区切りのペアとして指定します。各フォルダー内のすべてのファイルとサブフォルダーを含めるには true を指定し、各フォルダー内のファイルのみを含めるには false を指定します。

例: 'IncludeSubfolders',true

データ型: logical | double

代替ファイル システムのルート パス。"AlternateFileSystemRoots" と string ベクトルまたは cell 配列で構成される名前と値の引数として指定します。ローカル マシン上にデータストアを作成するが、別のマシン (異なるオペレーティング システムの可能性がある) 上でデータにアクセスして処理する必要がある場合は、"AlternateFileSystemRoots" を使用します。また、Parallel Computing Toolbox™ と MATLAB® Parallel Server™ を使用してデータを処理し、そのデータがローカル マシンに保存され、そのデータのコピーが異なるプラットフォームのクラウドやクラスター マシンにある場合、"AlternateFileSystemRoots" を使用してルート パスを関連付けなければなりません。

  • 相互に対応する 1 組のルート パスを関連付けるには、"AlternateFileSystemRoots" を string ベクトルとして指定します。以下に例を示します。

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

  • データストアに対応する複数の組のルート パスを関連付けるには、複数行を含む cell 配列として "AlternateFileSystemRoots" を指定します。各行は対応するルート パスの組を表します。cell 配列内の各行を string ベクトル、または文字ベクトルの cell 配列のいずれかとして指定します。以下に例を示します。

    • "AlternateFileSystemRoots" を string ベクトルの cell 配列として指定します。

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

    • あるいは、"AlternateFileSystemRoots" を文字ベクトルの cell 配列からなる cell 配列として指定します。

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

"AlternateFileSystemRoots" の値は、次の条件を満たさなければなりません。

  • 1 行以上の行を含み、各行は 1 組の対応するルート パスを指定する。

  • 各行は複数のルート パスを指定し、各ルート パスは 2 文字以上を含まなければならない。

  • ルート パスは一意で、他のルート パスのサブフォルダーではない。

  • ファイルの場所を指す 1 つ以上のルート パス エントリを含む。

詳細については、異なるマシンまたはクラスターで処理するためのデータストアの設定を参照してください。

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

データ型: string | cell

プロパティ

すべて展開する

この プロパティ は読み取り専用です。

ファイル セット オブジェクト内のファイル数。数値スカラーとして指定します。

例: fs.NumFiles

データ型: double

この プロパティ は読み取り専用です。

分割サイズ。'file' または数値スカラーとして指定します。

FileSplitSize に割り当てられた値により、nextfile メソッドからの出力が決まります。

  • FileSplitSize'file' の場合、nextfile メソッドは FileNameFileSizeOffset および SplitSize からなる table を返します。SplitSizeFileSize と等しい値に設定されます。

  • FileSplitSize が数値スカラー n の場合、nextfile メソッドは FileNameFileSizeOffset および SplitSize を返します。SplitSizeFileSplitSize と等しい値に設定されます。この情報は、ファイルの n バイトを読み取るために使用されます。後続の nextfile メソッドの呼び出しでは、同じファイルの末尾にいたるまで、ファイルの次の n バイトを読み取る上で有益な情報を返します。

例: 'FileSplitSize',20

データ型: double | char

メソッド

hasfile ファイルセット オブジェクト内に使用できるファイルがさらにあるかどうかを判別
maxpartitions 最大区画数
nextfile 次のファイルまたはファイル チャンクの情報
partition ファイルセット オブジェクトの分割
subsetデータストアまたは FileSet のサブセットの作成
reset ファイルセット オブジェクトのリセット
resolve ファイルセット オブジェクト内のすべてのファイルの情報

すべて折りたたむ

ファイルセット オブジェクトを作成し、一度に 1 ファイルずつファイル情報を取得するか、ファイルセット オブジェクト内のすべてのファイルの情報を取得します。

demos フォルダー内のすべての .mat ファイルについて、ファイルセット オブジェクトを 1 つ作成します。

folder = fullfile(matlabroot,'toolbox','matlab','demos');
fs = matlab.io.datastore.DsFileSet(folder,...
                 'IncludeSubfolders',true,...
                 'FileExtensions','.mat');

ファイルセット オブジェクトから最初のファイルと 2 番目のファイルの情報を取得します。

fTable1 = nextfile(fs) ; % first file 
fTable2 = nextfile(fs) ; % second file

一度に 1 ファイルずつ情報を取得してすべてのファイルの情報を取得し、その情報を table に収集します。

ft = cell(fs.NumFiles,1); % using cell for efficiency
i = 1;
reset(fs); % reset to the beginning of the fileset
while hasfile(fs)                 
    ft{i} = nextfile(fs);
    i = i + 1;
end
allFiles = vertcat(ft{:});

あるいは、すべてのファイルの情報を一度に取得します。

allfiles = resolve(fs);

ヒント

  • カスタム データストア内で DsFileSet オブジェクトをプロパティとして使用する場合は、copyElement メソッドを実装します。copyElement メソッドを実装することで、datastore オブジェクトのディープ コピーを作成できます。詳細については、コピー操作のカスタマイズを参照してください。copyElement メソッドの実装例については、カスタム データストアの開発を参照してください。

バージョン履歴

R2017b で導入