添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

一、未仔细学习dir()函数之前

本文介绍一种通过MATLAB获取当前文件夹下所有文件名称的方法,包含子文件夹内的文件名称,请参考。
主要用到的函数包括 uigetdir() dir()

AidDir = uigetdir(); 	% 通过交互的方式选择一个文件夹
if AidDir == 0 			% 用户取消选择
    fprintf('Please Select a New Folder!\n');
	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));
function [AllFileStruct] = GetAllFile(ParentFolder,AllFile) 
AllFileStruct = AllFile;
if isempty(fieldnames(AllFile))
    FileNum = 0; % 用于统计文件数量
    FileNum = size(AllFileStruct,2);
	%从第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);
            FileNum = FileNum + 1;
            %通过结构体可以存储多种数据,本文仅以文件名称为例
            AllFileStruct(FileNum).name = ParentFolder(i).name; 
catch

最后通过查看AllFile变量即可获取当前文件夹下所有文件名称。

二、仔细学习dir()函数之后 2022.05.12

先放代码:

AidDir = uigetdir(); 	% 通过交互的方式选择一个文件夹
if AidDir == 0 			% 用户取消选择
    fprintf('Please Select a New Folder!\n');
	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));

没了。。。。不需要画蛇添足。。。。

dir()函数以n×1结构体数组形式返回,其中ndir()函数返回的文件和文件夹的数量,下表中显示了结构体中的字段。

字段名称说明
name文件或文件夹名称char
folder文件或文件夹的位置char
date修改日期时间戳char
bytes文件大小(以字节为单位)double
isdir如果名称为文件夹,则为1;如果名称为文件,则为0logical
datenum修改日期是一个日期序列值double

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

需要写一个MATLAB的小程序,其中需要指定一个文件夹,返回这个文件夹下所有文件夹字,以及文件夹的个数。代码如下:function [names,class_num] = GetFiles() files = dir('data\多类样本\'); size0 = size(files); length = size0(1); names = files(3:length); class_num
MATLAB读取文件夹下特定类型格式文件的文件并读取该格式文件的数据 利用代码对大量数据进行自动批处理时,首先需要获取该数据存放的文件夹文件夹路径),然后获取文件夹下某一类型数据所有的文件,最后通过特定的数据读取代码读取数据进行自动批处理。这里以.txt文本类型作为示例(代码块中%后为注释内容)。 第一步:获取文件夹下某类型数据的所有文件 主要包括三个步骤: 设置数据存放的文件夹路径;...
注意返回的files是结构数组。每一个文件为一个结构体,有name,folder,date,bytes,isdir,datenum字段。 因此可通过filenames(i).name来获取文件 目的:获取当前文件夹下的特定文件,比如后缀为.mat filenames = dir('*.m start_path = 'C:\'; % 设置默认文件夹 folder_path = uigetdir(start_path, 'select a folder:'); % 通过UI界面选择想要读取的文件夹 file_list = dir(folder_pat