Вызов java .io.File (CurrPath) из MATLAB занимает много времени - PullRequest
0 голосов
/ 23 марта 2020

Я использую этот код для получения списка подкаталогов. Он присутствует в моем коде с 2015 года, но в настоящее время для его выполнения через несколько подпапок требуется 50 секунд.

Я однажды добавил его, поскольку сам MATLAB был на несколько медленнее, см. мой предыдущий вопрос .

function [sub] = subfolders (CurrPath,sub)
%------------------------------------------------
jFile = java.io.File(CurrPath); %java file object
jPaths = jFile.listFiles;       %java.io.File objects
if numel(jPaths) > 100
    % sub = {};
    return
end
jNames = jFile.list;            %java.lang.String objects    
isFolder = arrayfun(@isDirectory,jPaths); %boolean
tempFolderList = cellstr(char(jNames(isFolder)));   %cellstr

if nargin == 1
    sub = {};
end

for i = 1:numel(tempFolderList)
    currSubDir = tempFolderList{i};
    if ~isempty(currSubDir)
        sub{end+1} = fixPath([CurrPath '\' currSubDir]);
        % add only if last folder does not contain probe
        if ~stringContains(lower(currSubDir), 'probe') 
            if ~stringContains(lower(currSubDir), 'dg')
                sub = subfolders(sub{end},sub);
            end
        end
    end
end% if

end% functions

Есть ли другой и более быстрый способ добиться того же?

Использование Dir не является решением. Требуется 60 секунд, чтобы выполнить код

filelist = dir(fullfile(rootdir, '**\*.*'));  %get list of files and folders in any subfolder
folderlist = filelist(filelist.isdir);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...