Main Content

matlab.io.datastore.DsFileSet 클래스

패키지: matlab.io.datastore

데이터저장소의 파일 모음을 위한 File-set 객체

설명

DsFileSet 객체는 대규모 파일 모음에 대한 반복 처리를 관리하는 데 유용합니다. DsFileSet 객체를 DsFileReader 객체와 함께 사용하여 데이터저장소에서 파일을 관리하고 읽을 수 있습니다.

생성

fs = matlab.io.datastore.DsFileSet(location)은 지정된 location에 있는 파일의 모음에 대한 DsFileSet 객체를 반환합니다.

fs = matlab.io.datastore.DsFileSet(location,Name,Value)는 하나 이상의 이름-값 쌍의 인수를 사용하여 DsFileSet 객체에 대한 추가 파라미터를 지정합니다. Name은 속성 이름이 될 수도 있으며 Value는 이에 대응하는 값입니다. Name은 작은따옴표('') 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

입력 인수

모두 확장

file-set 객체에 포함할 파일 또는 폴더로, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 또는 구조체로 지정됩니다. 파일이 현재 폴더에 없는 경우 location은 전체 경로나 상대 경로여야 합니다. 지정된 폴더의 하위 폴더 내에 있는 파일은 file-set 객체에 자동으로 포함되지 않습니다.

일반적으로 Hadoop® 워크플로의 경우, location을 구조체로 지정할 때 필드 FileName, Offset, Size를 포함해야 합니다. 이 요구 사항을 충족하면 location 인수를 matlab.io.datastore.HadoopLocationBased 클래스의 initializeDatastore 메서드와 함께 직접 사용할 수 있습니다. 예제는 Add Support for Hadoop 항목을 참조하십시오.

location을 지정할 때에는 와일드카드 문자(*)를 사용할 수 있습니다. 이 문자를 지정할 경우 모든 일치하는 파일 또는 일치하는 폴더 내의 모든 파일이 file-set 객체에 포함됩니다.

파일을 로컬에서 사용할 수 없는 경우 파일이나 폴더의 전체 경로는 URL(Uniform Resource Locator)이어야 합니다(예:
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'와 함께 문자형 벡터, 문자형 벡터로 구성된 셀형 배열 또는 string형이 쉼표로 구분되어 지정됩니다. 빈 따옴표 ''를 사용하면 확장자 없이 파일을 나타낼 수 있습니다.

'FileExtensions'가 지정되지 않으면 DsFileSet는 자동으로 모든 파일 확장자를 포함합니다.

예: 'FileExtensions','.jpg'

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

데이터형: char | cell | string

하위 폴더 포함 플래그로, 'IncludeSubfolders'와 함께 truefalse가 쉼표로 구분되어 지정됩니다. 각 폴더 내에 있는 모든 파일과 하위 폴더를 포함하려면 true를 지정하고, 각 폴더 내에 있는 파일만 포함하려면 false를 지정하십시오.

예: 'IncludeSubfolders',true

데이터형: logical | double

파일 시스템 루트 경로의 대체 경로로, "AlternateFileSystemRoots"와 함께 string형 벡터 또는 셀형 배열로 구성된 이름-값 인수로 지정됩니다. 로컬 컴퓨터에 데이터저장소를 만들지만 다른 컴퓨터(다른 운영 체제의 컴퓨터일 수 있음)의 데이터에 액세스하고 이를 처리해야 하는 경우 "AlternateFileSystemRoots"를 사용합니다. 또한 Parallel Computing Toolbox™와 MATLAB® Parallel Server™를 사용하여 데이터를 처리하고, 처리한 데이터를 다른 플랫폼 클라우드 또는 다른 클러스터 컴퓨터에 있는 데이터의 복사본과 함께 로컬 컴퓨터에 저장할 경우 "AlternateFileSystemRoots"를 사용하여 루트 경로를 연결해야 합니다.

  • 실질적으로 서로 동일한 루트 경로들의 집합을 연결하려면 "AlternateFileSystemRoots"를 string형 벡터로 지정하십시오. 예를 들면 다음과 같습니다.

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

  • 데이터저장소에 대한 실질적으로 동일한 여러 루트 경로의 집합을 여러 개 연결하려면 "AlternateFileSystemRoots"를 여러 행이 포함된 셀형 배열로 지정하십시오. 여기서 각 행은 실질적으로 동일한 루트 경로들의 집합 하나를 나타냅니다. 셀형 배열의 각 행을 string형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정합니다. 예를 들면 다음과 같습니다.

    • "AlternateFileSystemRoots"를 string형 벡터로 구성된 셀형 배열로 지정합니다.

      {["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

속성

모두 확장

읽기 전용 속성입니다.

file-set 객체에 있는 파일 개수로, 숫자형 스칼라로 지정됩니다.

예: fs.NumFiles

데이터형: double

읽기 전용 속성입니다.

분할 크기로, 'file' 또는 숫자형 스칼라로 지정됩니다.

FileSplitSize에 할당된 값은 nextfile 메서드의 출력값을 좌우합니다.

  • FileSplitSize'file'이면 nextfile 메서드는 FileName, FileSize, Offset, SplitSize로 구성된 테이블을 반환합니다. SplitSize의 값은 FileSize와 같게 설정됩니다.

  • FileSplitSize가 숫자형 스칼라 n이면 nextfile 메서드는 FileName, FileSize, Offset, SplitSize를 반환합니다. SplitSize의 값은 FileSplitSize와 같게 설정됩니다. 이 정보를 사용하여 파일에서 n바이트를 읽게 됩니다. nextfile 메서드에 대한 후속 호출은 파일 끝에 도달할 때까지 같은 파일에서 그다음 n바이트를 읽을 수 있도록 정보를 반환합니다.

예: 'FileSplitSize',20

데이터형: double | char

메서드

hasfile file-set 객체에서 추가 파일 사용 가능 여부 판별
maxpartitions 최대 파티션 개수
nextfile 다음 파일 또는 파일 청크에 대한 정보
partition file-set 객체 파티셔닝
subsetCreate subset of datastore or FileSet
reset file-set 객체 재설정
resolve file-set 객체에 있는 모든 파일의 정보

예제

모두 축소

file-set 객체를 만들거나, 한 번에 하나씩 파일 정보를 가져오거나, file-set 객체에 있는 모든 파일에 대한 정보를 가져옵니다.

demos 폴더 내 모든 .mat 파일에 대한 file-set 객체를 만듭니다.

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

file-set 객체에서 첫 번째 파일과 두 번째 파일에 대한 정보를 가져옵니다.

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

한 번에 한 파일씩 정보를 가져오는 방식으로 모든 파일의 정보를 가져와서 그 정보를 테이블에 수집합니다.

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 객체의 깊은 복사를 생성할 수 있습니다. 자세한 내용은 Customize Copy Operation 항목을 참조하십시오. copyElement 메서드 구현 예는 Develop Custom Datastore 항목을 참조하십시오.

버전 내역

R2017b에 개발됨