Matlab实现获取文件夹下所有指定后缀的文件
作者:Toblerone_Wind 发布时间:2021-06-17 23:57:49
标签: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')
。
来源:https://blog.csdn.net/qq_42276781/article/details/127739572
0
投稿
猜你喜欢
- 前言开发中常用到主从数据库来提高系统的性能。怎么样才能方便的实现主从读写分离呢?近日工作任务较轻,有空学习学习技术,遂来研究如果实现读写分离
- 一、智能指针-唯一所有者boost::scoped_ptr 是一个智能指针,它是动态分配对象的唯一所有者。 boost::scoped_pt
- 本文主要介绍了java8 stream自定义分组求和并排序的实现,分享给大家,具体如下: public static void
- 一、Mybatis执行流程具体分析Mybatis是如何操作数据库的!1、定义我们的核心配置文件的路径,这个路径是从target/classe
- 前言人类建造迷宫已有5000年的历史。在世界的不同文化发展时期,这些奇特的建筑物始终吸引人们沿着弯弯曲曲、困难重重的小路吃力地行走,寻找真相
- 最近被.net winform中的控件布局搞困惑了,由于控件都是使用Dock方式的,操作起来也是比较方便,如果最大化,窗口大小调整等,都可以
- 1 运算符1.1 概述运算符 用于连接 表达式 的 操作数,并对操作数执行运算。例如,表达式num1+num2,其操作数是num1和num2
- SharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个key-
- 以下实例演示了如何通过 Collections 类的 Collections.max() 和 Collections.min() 方法来查找
- 本文实例为大家分享了unity实现手游虚拟摇杆的具体代码,供大家参考,具体内容如下using System.Collections;usin
- 这篇文章主要介绍了spring boot如何配置请求的入参和出参json数据格式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一
- 本文实例总结了C#中WinForm程序退出方法技巧。分享给大家供大家参考。具体分析如下:在c#中退出WinForm程序包括有很多方法,如:t
- 这篇文章主要介绍了SpringCloud断路器Hystrix原理及用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参
- 本文实例为大家分享了使用C#写一个时钟,供大家参考,具体内容如下时钟是这样的一共使用四个控件即可:WinFrom窗体应用程序代码:using
- 本文实例讲述了C#日期格式字符串的相互转换操作。分享给大家供大家参考,具体如下:方法一:Convert.ToDateTime(string)
- config.json 文件内容如下{"Data": {"DefaultConnection": {
- using System; using System.IO; public class FileApp { &nbs
- 在进行C#应用程序开发的过程中,经常需要多窗体之间进行数据通信,本文举几个例子,把几种常用的通信方式总结一下,窗体界面如下图所示: 
- 面试官:sychronized关键字有哪些特性?应聘者:可以用来修饰方法;可以用来修饰代码块;可以用来修饰静态方法;可以保证线程安全;支持锁
- 类加载器的分类。试验:使用maven打包<build> <plugins> <plu