Matlab学习:读取指定文件夹及其五级子文件夹内的文件

OpenCV2.4.X版本提供了三个函数来读取指定目录内的文件,它们分别是:

(1)GetListFiles:读取指定目录内所有文件,不包含子目录;

(2)GetListFilesR:读取指定目录及其子目录(仅一级子目录)内所有文件;

(3)GetListFolders:读取指定目录内所有目录,不包含文件;

然而,Matlab中并没有对应的函数,有人可能会说dir不就可以吗,但dir返回的值还进行一些处理我们才能用的,如移除返值中包含的父目录及当前目录。这里我就写了一段代码来读取指定目录及其子目录(递归五级子目录)内所有文件,相当于GetListFilesR,但递归子目录层次更深。具体代码如下:

function files = GetListFilesR(top1dir)

cn = 1;
files = cell(0);

top1 = dir(top1dir);
len1 = length(top1);
for a = 1:len1
    %1.1是本目录或父目录
    if strcmp(top1(a).name, ‘.‘) || strcmp(top1(a).name, ‘..‘)
        continue;
    end

    %1.2不是目录
    if top1(a).isdir == 0
        files{cn} = strcat(top1dir, ‘/‘, top1(a).name);
        cn = cn + 1;
        continue;
    end

    %1.3是目录
    top2dir = strcat(top1dir, ‘/‘, top1(a).name);
    top2 = dir(top2dir);
    len2 = length(top2);
    for b = 1:len2
        %2.1是本目录或父目录
        if strcmp(top2(b).name, ‘.‘) || strcmp(top2(b).name, ‘..‘)
            continue;
        end

        %2.2不是目录
        if top2(b).isdir == 0
            files{cn} = strcat(top2dir, ‘/‘, top2(b).name);
            cn = cn + 1;
            continue;
        end 

        %2.3是目录
        top3dir = strcat(top2dir, ‘/‘, top2(b).name);
        top3 = dir(top3dir);
        len3 = length(top3);
        for c = 1:len3
            %3.1是本目录或父目录
            if strcmp(top3(c).name, ‘.‘) || strcmp(top3(c).name, ‘..‘)
                continue;
            end

            %3.2不是目录
            if top3(c).isdir == 0
                files{cn} = strcat(top3dir, ‘/‘, top3(c).name);
                cn = cn + 1;
                continue;
            end 

            %3.3是目录
            top4dir = strcat(top3dir, ‘/‘, top3(c).name);
            top4 = dir(top4dir);
            len4 = length(top4);
            for d = 1:len4
                 %4.1是本目录或父目录
                if strcmp(top4(d).name, ‘.‘) || strcmp(top4(d).name, ‘..‘)
                    continue;
                end

                %4.2不是目录
                if top4(d).isdir == 0
                    files{cn} = strcat(top4dir, ‘/‘, top4(d).name);
                    cn = cn + 1;
                    continue;
                end  

                %4.3是目录
                top5dir = strcat(top4dir, ‘/‘, top4(d).name);
                top5 = dir(top5dir);
                len5 = length(top5);
                for e = 1:len5
                     %5.1是本目录或父目录
                    if strcmp(top5(e).name, ‘.‘) || strcmp(top5(e).name, ‘..‘)
                        continue;
                    end

                    %5.2不是目录
                    if top5(e).isdir == 0
                        files{cn} = strcat(top5dir, ‘/‘, top5(e).name);
                        cn = cn + 1;
                    end
                end%5级
            end%4级
        end%3级
    end%2级
end%1级
end
时间: 2024-10-13 01:39:17

Matlab学习:读取指定文件夹及其五级子文件夹内的文件的相关文章

asp.net 遍历文件夹下全部子文件夹并绑定到gridview上

遍历文件夹下所有子文件夹,并且遍历配置文件某一节点中所有key,value并且绑定到GridView上 C#代码   Helper app_Helper = new Helper(); DataSet ds = new DataSet(); DataTable dt = new DataTable(); protected void Page_Load(object sender, EventArgs e) { gvwBind(); } #region 绑定GridView /// <summa

FATFS-f_deldir-删除文件夹(删除子文件夹及文件连同其本身)

转载请注明出处:http://blog.csdn.net/u011833609/article/details/47803551 //==================================================================================================== //函 数 名 : f_deldir //函数功能 : 移除一个文件夹,包括其本身和其子文件夹,子文件 //输 入 : const TCHAR *path---指向

Python扫描指定文件夹下(包含子文件夹)的文件

扫描指定文件夹下的文件.或者匹配指定后缀和前缀的函数. 假设要扫描指定文件夹下的文件,包含子文件夹,调用scan_files("/export/home/test/") 假设要扫描指定文件夹下的特定后缀的文件(比方jar包),包含子文件夹,调用scan_files("/export/home/test/", postfix=".jar") 假设要扫描指定文件夹下的特定前缀的文件(比方test_xxx.py).包含子文件夹,调用scan_files

取消文件夹下的子文件夹和文件的只读属性

private void UnsetReadOnly(string dirPath) {//http://bbs.csdn.net/topics/380233913 string[] dirPathes = Directory.GetDirectories(dirPath, "*.*", SearchOption.AllDirectories); string[] filePathes = Directory.GetFiles(dirPath, "*.*", Sea

linux系统下修改文件夹权限及其子文件夹权限

root用户下 chmod -R 777 eclipse

matlab 把一个文件夹下的所有图片(可以包含在子文件夹下)考到指定文件夹下

clc;clear all; maindir = 'C:\Users\wang\Desktop\iLIDS-VID\i-LIDS-VID\images\cam2';subdir = dir( maindir ); % 先确定子文件夹 for i = 1 : length( subdir ) if( isequal( subdir( i ).name, '.' ) || ... isequal( subdir( i ).name, '..' ) || ... ~subdir( i ).isdir

MATLAB检查指定路径中的子文件夹中的文件名中是否带有空格

测试文件夹为: clear;close all;clc; %% %程序实现的功能 %检查指定路径中的子文件夹中的文件名中是否带有空格,并去掉文件名中的空格 %% %程序中用到的之前不清楚的函数如下 %1)strfind(a,b):即找a中是否有b,如果a中有b,则输出b的位置序号.没有输出空数组 %2)isempty(a):判断数组是否为空 %3)strrep(a,b,c):就是把a中所有出现的b换为c %4)movefile(a,b):a移动为b,如C:\test1.jpg移动为C\test2

MATLAB遍历子文件夹及其下文件

MATLAB遍历子文件夹及其下文件 以前从未遇到过用MATLAB批处理文件的情况,此次项目需要批量将二进制数据文件导入matlab进行svm分类,现将matlab遍历子文件夹及其文件的方法记录下来. 文件目录结构 /maindir |-- subdir1 |-- datafile1.dat |-- datafile2.dat |-- subdir2 |-- datafiel3.dat |-- datafiel4.dat |-- subdir3 |-- datafile5.dat |-- data

Linux C 读取文件夹下所有文件(包括子文件夹)的文件名(转)

Linux C  下面读取文件夹要用到结构体struct dirent,在头#include <dirent.h>中,如下: 1 #include <dirent.h> 2 struct dirent 3 { 4 long d_ino; /* inode number 索引节点号 */ 5 off_t d_off; /* offset to this dirent 在目录文件中的偏移 */ 6 unsigned short d_reclen; /* length of this d