matlab采用队列递归遍历指定路径下的文件夹。
folder_name0 = 'C:\Users\ly\Desktop\a';
fileFoldertemp(1).fn = folder_name0 ;
head = 1;
tail = 1;
l = 1;
m = 1;
while 1
fileFolder = getcurrentfolder(fileFoldertemp(tail).fn );
for rc = 1:length(fileFolder)
fileFoldert = strcat(fileFoldertemp(tail).fn,'\',fileFolder{rc});
head = head + 1; % head 多一个位置
fileFoldertemp(head).fn = fileFoldert;
end
if length(fileFolder) == 0
fileFolderRealLast{l} = fileFoldertemp(tail).fn;
l= l + 1;
end
fileFolderRealAll{m} = fileFoldertemp(tail).fn;
m= m + 1;
tail = tail + 1;% tail 指向下一个位置
%整体 后移一个位置
for i = 1: length(fileFoldertemp)-1
fileFoldertemp(i) = fileFoldertemp(i+1);
end
tail = tail - 1;
head = head - 1;
if head == 0
break;
end
end
% 其中,
% fileFolderRealAll 为所有文件路径
% fileFolderRealLast 为最后一级文件夹路径
%其中 getcurrentfolder 函数定义如下(参考了百度知道):
function [fileFolder] = getcurrentfolder(folder_name0)
FileList=dir(folder_name0);
ff=1;
num=1;
fileFolder={};
%该路径下是否是文件夹
for rr=1:length(FileList)
if(FileList(rr).isdir==1&&~strcmp(FileList(rr).name,'.')&&~strcmp(FileList(rr).name,'..'))
fileFolder{ff}=[FileList(rr).name];%存储字库文件夹名
ff=ff+1;
end
end
下图为遍历结果: