Main Content

matlab.io.datastore.FileSet

データストア内のファイルの集合のファイルセット

R2020a 以降

説明

matlab.io.datastore.FileSet オブジェクトを使用して、ファイルを繰り返し移動するときにファイルの大規模な集合を処理できます。FileSet オブジェクトを DsFileReader オブジェクトと共に使用して、データストアのファイルを管理し、読み取ります。

作成

説明

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

fs = matlab.io.datastore.FileSet(location,Name,Value) は、ファイル拡張子、サブフォルダーを含めるかどうかを指定するか、オブジェクトのプロパティを設定します。名前と値のペアは複数指定することができます。名前を引用符で囲みます。

入力引数

すべて展開する

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

通常、Hadoop® ワークフローで location を構造体として指定する場合、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 を引用符で囲みます。

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

サブフォルダーを含めるかどうかのフラグ。数値あるいは logical 1 (true) または 0 (false) として指定します。各フォルダー内のすべてのファイルとサブフォルダーを含めるには true を指定し、各フォルダー内のファイルのみを含めるには false を指定します。

例: 'IncludeSubfolders',true

ファイル拡張子。文字ベクトル、文字ベクトルの cell 配列、または string 配列として指定します。空の引用符 '' を使用して、拡張子のないファイルを表すことができます。

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

例: 'FileExtensions','.jpg'

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

プロパティ

すべて展開する

代替ファイル システムのルート パス。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

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

FileSet オブジェクトから読み取るファイル数。数値スカラーとして指定します。

例: fs.NumFilesRead

データ型: double

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

matlab.io.datastore.FileSet オブジェクト内のファイルに関する情報。以下のプロパティを使用する matlab.io.datastore.FileInfo オブジェクトとして返されます。

  • FilenameFileSet オブジェクト内のファイルの名前。名前にはファイルの絶対パスが含まれます。

  • FileSize — ファイルのサイズ (バイト数)。

特定のファイルの情報を得るには、ファイルのインデックスを指定します。たとえば、fs.FileInfo(2) では 2 つ目のファイルのファイル名とファイル サイズが返されます。(:) を指定するかインデックスを指定せずに fs.FileInfo を呼び出すと、すべてのファイルに関する情報が返されます。

例: fs.FileInfo(2)

オブジェクト関数

hasNextFile ファイルセット内に別のファイルがあるかどうかを確認する
nextfile 次のファイルまたはファイル チャンクの情報
hasPreviousFile ファイルセットに以前のファイルがあるかどうかを確認する
previousfile ファイルセット内の以前のファイルに関する情報
progress 読み取られたブロックまたはファイルの数を確認する
maxpartitions 最大区画数
partition ファイルセット オブジェクトの分割
subsetデータストアまたは FileSet のサブセットの作成
reset ファイルセット オブジェクトのリセット

すべて折りたたむ

ファイルセットを作成して、ファイルセット内の特定のファイルに関する情報をクエリします。

ファイルの集合のファイルセット fs を作成します。

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

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

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

関数 nextfile を使用するか、FileInfo プロパティをクエリしてインデックスを指定し、特定のファイルの情報を取得します。nextfile を使用して連続するファイルに関する情報を取得します。たとえば、セット内の最初の 2 つのファイルに関する情報を取得します。

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

    "/mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/toolbox/matlab/demos/accidents.mat"      7343  


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

    "/tmp/Bdoc24a_2511836_3459710/tp283b0455/matlab-ex98758341/airlineResults.mat"    1.5042e+05


FileInfo プロパティをクエリして、セット内の最後のファイルに関する情報をクエリします。

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

    "/mathworks/devel/bat/filer/batfs1904-0/Bdoc24a.2511836/build/matlab/toolbox/matlab/demos/earth.mat"     32522  


バージョン履歴

R2020a で導入