Matlab实现获取文件夹下所有指定后缀的文件

 更新时间:2022年11月08日 08:52:20   作者: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;如果名称为文件,则为0logical
datenum修改日期是一个日期序列值double

提取指定扩展名的文件dir('**/*.m')

到此这篇关于Matlab实现获取文件夹下所有指定后缀的文件的文章就介绍到这了,更多相关Matlab获取指定后缀文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++如何用智能指针管理内存资源

    C++如何用智能指针管理内存资源

    这篇文章主要介绍了C++如何用智能指针管理内存资源,帮助大家更好的理解和使用c++开发,感兴趣的朋友可以了解下
    2020-08-08
  • C++实现LeetCode(140.拆分词句之二)

    C++实现LeetCode(140.拆分词句之二)

    这篇文章主要介绍了C++实现LeetCode(140.拆分词句之二),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C语言面试常见考点排序总结

    C语言面试常见考点排序总结

    深处开发岗,其实排序也是绕不开的环节,其中冒泡排序,选择排序,插入排序,归并排序,快速排序,堆排序也是我在秋招以来频繁问到的技术点,今天我们来重点聊聊排序
    2021-11-11
  • C++ 中随机函数random函数的使用方法

    C++ 中随机函数random函数的使用方法

    这篇文章主要介绍了C++ 中随机函数random函数的使用方法的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • 浅谈C++11中的几种锁

    浅谈C++11中的几种锁

    本文主要介绍了C++11中的几种锁,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • C/C++实现八大排序算法汇总

    C/C++实现八大排序算法汇总

    这篇文章主要为大家详细介绍了C/C++实现八大排序算法汇总,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • 基于Matlab实现绘制3D足球的示例代码

    基于Matlab实现绘制3D足球的示例代码

    这篇文章主要为大家详细介绍了如何利用Matlab实现绘制3D足球,文中的示例代码讲解详细,对我们学习Matlab有一定帮助,需要的可以参考一下
    2022-11-11
  • C语言实现图书管理系统

    C语言实现图书管理系统

    这篇文章主要为大家详细介绍了C语言实现图书管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C++超详细分析顺序表

    C++超详细分析顺序表

    程序中经常需要将一组数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等。一组数据中包含的元素个数可能发生变化,顺序表则是将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示
    2022-03-03
  • 如何在C++中实现按位存取

    如何在C++中实现按位存取

    实现紧凑存取,不是按一个字节一个字节地存取,而是按位存取,本文就是介绍了如何在C++中实现按位存取,需要的朋友可以参考下
    2015-07-07

最新评论