Matlab实现获取文件夹下所有指定后缀的文件
作者:Toblerone_Wind
这篇文章主要为大家详细介绍了Matlab如何获取文件夹下所有指定后缀的文件(包含子文件夹),文中的示例代码讲解详细,感兴趣的可以尝试一下
1. 要求
获取指定文件夹下(包含子文件夹),所有指定后缀(如txt)的文件路径(即文件所在目录+文件名),返回一个字符串数组。
2. 代码
获取C:/Users/Administrator/Desktop文件夹下(包含子文件夹)的所有.m文件
clear dirOutput = dir('C:/Users/Administrator/Desktop/**/*.m'); folder = string({dirOutput.folder}'); file = string({dirOutput.name}'); filepath = strcat(folder, '\', file);
获取C:/Users/Administrator/Desktop文件夹下(不包含子文件夹)的所有.m文件
clear dirOutput = dir('C:/Users/Administrator/Desktop/*.m'); folder = string({dirOutput.folder}'); file = string({dirOutput.name}'); filepath = strcat(folder, '\', file);
封装成函数。调用时若输入两个参数,则默认搜索子文件夹
function filepath = getFilesPath(baseDir, ext, findSubfile) if nargin == 2 % 判断输入的参数是否为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
调用方法
getFilesPath('C:/Users/Administrator/Desktop', 'm')
结果展示
3. 参考
未仔细学习dir()函数之前
本文介绍一种通过MATLAB获取当前文件夹下所有文件名称的方法,包含子文件夹内的文件名称,请参考。
主要用到的函数包括uigetdir()、dir()。
AidDir = uigetdir(); % 通过交互的方式选择一个文件夹 if AidDir == 0 % 用户取消选择 fprintf('Please Select a New Folder!\n'); else ParentFolder = dir(AidDir); % 获取当前文件夹下的信息 AllFile = struct; % 建立空结构体 AllFile = GetAllFile(ParentFolder,AllFile); if isempty(fieldnames(AllFile)) fprintf('There are no files in this folder!\n'); else % 当前文件夹下有文件,反馈文件数量 fprintf('Number of Files: %i \n',size(AllFile,2)); end end
function [AllFileStruct] = GetAllFile(ParentFolder,AllFile) AllFileStruct = AllFile; if isempty(fieldnames(AllFile)) FileNum = 0; % 用于统计文件数量 else FileNum = size(AllFileStruct,2); end try %从第3个开始是文件,如果报错,则表明当前文件夹没有文件,运行catch for i = 3:length(ParentFolder) if ParentFolder(i).isdir == 1 % 当前是文件夹 SubFolder = [ParentFolder(i).folder,'\',ParentFolder(i).name]; Temp = dir(SubFolder); AllFileStruct = GetAllFile(Temp,AllFileStruct); % 函数递归 FileNum = size(AllFileStruct,2); else FileNum = FileNum + 1; %通过结构体可以存储多种数据,本文仅以文件名称为例 AllFileStruct(FileNum).name = ParentFolder(i).name; end end catch end end
最后通过查看AllFile变量即可获取当前文件夹下所有文件名称。
仔细学习dir()函数之后
先放代码:
AidDir = uigetdir(); % 通过交互的方式选择一个文件夹 if AidDir == 0 % 用户取消选择 fprintf('Please Select a New Folder!\n'); else cd(AidDir) RawFile = dir('**/*.*'); %主要是这个结构,可以提取所有文件 AllFile = RawFile([RawFile.isdir]==0); if isempty(fieldnames(AllFile)) fprintf('There are no files in this folder!\n'); else % 当前文件夹下有文件,反馈文件数量 fprintf('Number of Files: %i \n',size(AllFile,1)); end end
没了。。。。不需要画蛇添足。。。。
dir()函数以n×1结构体数组形式返回,其中n是dir()函数返回的文件和文件夹的数量,下表中显示了结构体中的字段。
字段名称 | 说明 | 类 |
---|---|---|
name | 文件或文件夹名称 | char |
folder | 文件或文件夹的位置 | char |
date | 修改日期时间戳 | char |
bytes | 文件大小(以字节为单位) | double |
isdir | 如果名称为文件夹,则为1;如果名称为文件,则为0 | logical |
datenum | 修改日期是一个日期序列值 | double |
提取指定扩展名的文件dir('**/*.m')
。
到此这篇关于Matlab实现获取文件夹下所有指定后缀的文件的文章就介绍到这了,更多相关Matlab获取指定后缀文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!