遞歸讀取某文件夾及其子文件夾中线脚,后綴為".mat"的文件路徑
方式一:遞歸函數(shù)
clc; clear; close all;
fclose all;
fileDir = 'F:\數(shù)據(jù)';
dataPath = getAllDataPath(fileDir); % 遞歸讀取fileDir路徑下的".mat"文件的路徑
%% 遞歸讀取fileDir路徑下的".mat"文件的路徑
function dataPath = getAllDataPath(fileDir)
subDirs = dir(fileDir); % 列出當(dāng)前文件夾中的文件和文件夾
dataPath = [];
for i = 1:length(subDirs)
% 判斷是否為文件夾窘游,如果是則遞歸补君;如果否,則查找后綴為".mat"的文件
if subDirs(i).isdir && subDirs(i).name ~= "." && subDirs(i).name ~= ".."
recursionDir = [subDirs(i).folder, '\', subDirs(i).name];
dataPath = [dataPath; string(getAllDataPath(recursionDir) )];
elseif subDirs(i).name ~= "." && subDirs(i).name ~= ".." && subDirs(i).name(end-3:end) == ".dat"
filePath = [subDirs(i).folder, '\', subDirs(i).name];
dataPath = [dataPath; string(filePath)];
end
end
end
打印函數(shù)返回dataPath
就是matlab遞歸讀取文件夾以及子文件夾中所有.mat后綴文件播揪。
方式二:dir函數(shù)特性
獲取C:/Users/Administrator/Desktop文件夾下(不包含子文件夾)的所有.mat文件
clear
dirOutput = dir('C:/Users/Administrator/Desktop/**/*.mat');
folder = string({dirOutput.folder}');
file = string({dirOutput.name}');
filepath = strcat(folder, '\', file);
封裝成函數(shù)榛丢。調(diào)用時(shí)若輸入兩個(gè)參數(shù)馏臭,則默認(rèn)搜索子文件夾
function filepath = getFilesPath(baseDir, ext, findSubfile)
if nargin == 2 % 判斷輸入的參數(shù)是否為2
findSubfile = true;
end
if findSubfile
dirOutput = dir([baseDir '/**/*.' ext]);
else
dirOutput = dir([baseDir '/*.' ext]);
end
folder = string({dirOutput.folder}');
file = string({dirOutput.name}');
filepath = strcat(folder, '\', file);
end
調(diào)用方法
getFilesPath('C:/Users/Administrator/Desktop', 'mat')
得到同樣的結(jié)果边坤。