用java实现matlab递归文件夹读取。伊奥。文件
目前,我使用此功能创建子文件夹列表:
% create list of all sub folders
dirs = regexp(genpath(basePath),['[^;]*'],'match');
然而,我的文件夹包含>;10万份文件。此功能需要几分钟到几小时才能完成。 但文件夹的数量仅为<;一百
我读到java.io.File
的速度要快很多。但是,如何使用它来读取文件夹
jFile = java.io.File([basePath '*']); %java file object
jPaths = jFile.listFiles; %java.io.File objects
jNames = jFile.list; %java.lang.String objects
isFolder = arrayfun(@isDirectory,jPaths); %boolean
dirs = cellstr(char(jNames(~isFolder))); %cellstr
还给我一个空数组
编辑: 我尝试了下面的方法,但是递归失败了,因为函数返回后,dirs数组是空的——就好像dirs是一个全局变量一样
function [sub] = subfolders (CurrPath,sub)
%------------------------------------------------
jFile = java.io.File(CurrPath); %java file object
jPaths = jFile.listFiles; %java.io.File objects
jNames = jFile.list; %java.lang.String objects
isFolder = arrayfun(@isDirectory,jPaths); %boolean
dirs = cellstr(char(jNames(isFolder))) %cellstr
if nargin == 1
sub = {};
end
for i = 1:numel(dirs)
currSubDir = dirs{i};
if ~isempty(currSubDir)
sub{end+1} = fixPath([CurrPath '\' currSubDir]);
sub = subfolders(sub{end},sub);
end
end% if
共 (0) 个答案