ディレクトリの再帰的トラバーサルは 2 レベルを超えません。これはなぜですか?
================================================== ===========
currentFolderDir = '.'; % pwd
% path('C:\Users\EI\Documents\MATLAB\OO\Simple Object Creation in Object Oriented');
深さレベル = 0;
フォルダ数 = 0;
ファイル数 = 0;
fprintf('====================================\n');
fprintf('深度レベル: %d\n', depthLevel);
[folderCount、fileCount] = fileDirectoryRecursiveTraversal (currentFolderDir、depthLevel、folderCount、fileCount);
================================================== ===========
関数 [folderCount、fileCount] = fileDirectoryRecursiveTraversal (currentFile、depthLevel、folderCount、fileCount)
i = 1 の場合:深さレベル
fprintf('\t\t');
終わり
fprintf('%s\n', currentFile ); % エントリの名前を表示
%isdir(currentFile) % [ERR] レベル 2 を超えることはできません
%一時停止;
if (isdir(currentFile)) % ディレクトリかチェック
フォルダ数 = フォルダ数 + 1;
fprintf('\n%d 個のフォルダーがあります。\n', folderCount);
一時停止
深さレベル = 深さレベル + 1;
fprintf('====================================\n');
fprintf('深度レベル: %d\n', depthLevel);
% ディレクトリ内のすべてのエントリのリストを取得する
エントリ = dir(現在のファイル);
% エントリ (1).name = '.'
% エントリ (2).name = '..'
numberOfEntries = 長さ (エントリ); % 現在のフォルダーとフォルダーへのポインターを含む 1 レベル上
% リストが null でないことを確認してください
% if( (numberOfEntries - 2) ~= 0 ) % 2: % エントリ (1).name = '.'; % エントリ (2).name = '..'
場合 (エントリー数 ~= 2)
% すべてのエントリをループします
i = 3 の場合:numberOfEntries
% トラバースする再帰呼び出し
[folderCount, fileCount] = fileDirectoryRecursiveTraversal( entry(i).name, depthLevel, folderCount, fileCount); % i = 3:numberOfEntries
終わり
fprintf('\n深度レベル: %d\n', depthLevel);
fprintf('%d 個のファイルがあります。\n\n', fileCount);
ファイル数 = 0;
そうしないと
% disp('cccccccccccccccccccc')
ファイル数 = 0; % 空のフォルダ
終わり
そうしないと
ファイル数 = ファイル数 + 1;
フォルダ数 = 0;
終わり
フォルダ数 = フォルダ数 - 1;
深さレベル = 深さレベル - 1; % 終了レベル
終わり