matlab遍历文件夹下的所有文件

输入为目录,输出为cell数组。使用第i个文件时,文件名为files{i}。

function [ files ] = scanDir( root_dir )

files={};
if root_dir(end)~='/'
 root_dir=[root_dir,'/'];
end
fileList=dir(root_dir);  %扩展名
n=length(fileList);
cntpic=0;
for i=1:n
    if strcmp(fileList(i).name,'.')==1||strcmp(fileList(i).name,'..')==1
        continue;
    else
        fileList(i).name
        if ~fileList(i).isdir
            
            full_name=[root_dir,fileList(i).name];
            
%              [pathstr,name,ext,versn]=fileparts(full_name);
%              if strcmp(ext,'.jpg')
                 cntpic=cntpic+1;
                 files(cntpic)={full_name};
%              end
        else
            files=[files,scanDir([root_dir,fileList(i).name])];
        end
    end
end



end




### 使用 MATLAB 编写遍历文件夹中所有文件的脚本 为了实现遍历指定文件夹中的所有文件,在MATLAB中可以利用`dir`函数来获取文件列表并逐一处理这些文件。下面是一个简单的例子,展示了如何读取特定路径下的所有`.avi`视频文件,并打印它们的名字。 ```matlab % 定义要扫描的目标文件夹路径 targetFolderPath = 'C:\path\to\your\video_folder'; % 用户应替换为实际路径[^1] % 获取目标文件夹下所有的 .avi 文件的信息结构体数组 fileInfoArray = dir(fullfile(targetFolderPath, '*.avi')); % 初始化一个循环变量用于迭代访问每一个文件信息对象 for fileIndex = 1:length(fileInfoArray) currentFileName = fileInfoArray(fileIndex).name; fprintf('Processing file: %s\n', currentFileName); end ``` 此代码片段首先指定了待操作的文件夹位置;接着通过调用`dir()`方法获得该目录内匹配模式(这里是以.avi结尾)的所有条目组成的结构体数组;最后进入for-each风格的循环体内逐项取出每个文件名进行相应处理——此处仅作为示范简单地将其名称输出到命令窗口。 对于更复杂的需求比如递归子文件夹或是支持多种类型的媒体文件,则可以在上述基础上做适当扩展: ```matlab function processFilesInFolder(folderPath) disp(['Starting processing in ', folderPath]); % 支持更多种格式的文件过滤条件 extensions = {'*.avi', '*.mp4', '*.mkv'}; allFiles = []; for extIdx = 1:numel(extensions) extensionPattern = fullfile(folderPath, extensions{extIdx}); matchingFiles = dir(extensionPattern); if ~isempty(matchingFiles) allFiles = [allFiles; matchingFiles]; end end for idx = 1:length(allFiles) fileName = allFiles(idx).name; fullPathName = fullfile(folderPath, fileName); try % 对单个文件执行具体的操作逻辑... disp(['Handling:', fullPathName]); catch ME warning(['Error occurred while handling "%s": %s',... fullPathName, ME.message]); end end subFolders = findfolders(folderPath); % 假设有一个辅助函数findfolders()用来找到子文件夹 for sfIdx = 1:length(subFolders) processFilesInFolder(subFolders{sfIdx}); % 递归调用自己继续深入探索更深一层级的文件夹 end end ``` 这段增强版的程序不仅能够一次性处理多个不同后缀名的多媒体资源,而且还能自动探测并深入任何存在的子文件夹来进行全面检索。注意这里的`processFilesInFolder`函数假设存在另一个名为`findfolders`的帮助工具负责返回给定父节点内的全部非隐藏型子目录链接集合。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值