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

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

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

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

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

function files = GetListFilesR(top1dir, ext)

%1.指定输出参数类型
files = cell(0);

%2.获取所有文件
cn = 1;
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级

if strcmp(ext, 'none') == 1
    return;
end

%3.获取指定后缀名文件
tmp = files;
len = length(tmp);
files = cell(0);
k = 1;
for i = 1:len
    %获取文件名
    filelen = length(tmp{i});
    indexs = strfind(tmp{i}, '.');
    lastIndex = indexs(end);
    fileext = tmp{i}(lastIndex+1:filelen);

    %判断是否为指定类型文件
    if strcmp(fileext, ext) == 1
        files{k} = tmp{i};
        k = k + 1;
    end
end

end

  

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

  1. 文件夹中含有子文件夹,修改子文件夹中的图像存储格式(python实现)

    文件夹中含有子文件夹,修改子文件夹中的图像存储格式,把png图像改为jpg图像,python代码如下: import os import cv2 filePath = 'C:\\Users\\admi ...

  2. JAVA中删除文件夹下及其子文件夹下的某类文件

    ##定时删除拜访图片 ##cron表达式 秒 分 时 天 月 ? ##每月1日整点执行 CRON1=0 0 0 1 * ? scheduled.enable1=false ##图片路径 filePat ...

  3. Android 读取手机某个文件夹目录及子文件夹中所有的txt文件

    1. activity_main.xml文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andro ...

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

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

  5. Android中读取assets文件夹中的子文件夹内容

    文件结构如下:assets/info/info AssetManager am = this.getResources().getAssets(); InputStream input = null; ...

  6. NSIS如何对一整个目录文件夹(包括子文件夹和其中的文件)压缩

    原来不加/r参数,NSIS编译器就会不认识文件夹啊. File /r [dir] Reference: http://stackoverflow.com/questions/7973242/nsis- ...

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

    遍历文件夹下所有子文件夹,并且遍历配置文件某一节点中所有key,value并且绑定到GridView上 Helper app_Helper = new Helper(); DataSet ds = n ...

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

    测试文件夹为: clear;close all;clc; %% %程序实现的功能 %检查指定路径中的子文件夹中的文件名中是否带有空格,并去掉文件名中的空格 %% %程序中用到的之前不清楚的函数如下 % ...

  9. c++读取文件夹及子文件夹数据

    这里有两种情况:读取文件夹下所有嵌套的子文件夹里的所有文件  和 读取文件夹下的指定子文件夹(或所有子文件夹里指定的文件名) <ps,里面和file文件有关的结构体类型和方法在 <io.h ...

随机推荐

  1. AR增强现实特点、关键技术和应用

    http://wenku.baidu.com/link?url=ABXxm5yezMIQRJUV7XvNWUe_QpUUdpQ3IxGRpYUa760iex1_bygCcTBvEhCMvrdLAmSX ...

  2. mysql5.7.9 源码安装 (转)

    1,安装所有包 yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib libxml libgc ...

  3. java读取properties文件的内容

    获得properties文件中某个key对应着的value // 路径名称 + properties的名称,不要“properties” private static final String BUN ...

  4. Struts2 - Study 1

    领略下传说中的Struts2,写了个小例子,有点意思.比起.net中的MVC有意思的在于它是你自己一步步去配置实现,想怎么搞就怎么搞,.net的MVC,它干了什么事你完全不知,只不过知道怎么用而已. ...

  5. Angular学习(8)- directive

    <!DOCTYPE html> <html ng-app="MyApp"> <head> <title>Study 9</ti ...

  6. FFTW简介及使用

    http://fftw.org/ FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) i ...

  7. bzoj1346: [Baltic2006]Coin

    Description 有一个国家,流通着N种面值的硬币,其中包括了1分硬币.另外,有一种面值为K分的纸币,它超过了所有硬币的面值. 有一位硬币收藏家,他想收集每一种面值的硬币样本.他家里已经有一些硬 ...

  8. define宏定义中的#,##,@#及\符号

    define宏定义中的#,##,@#及\符号 在#define中,标准只定义了#和##两种操作.#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串. 1.# (string ...

  9. 异常处理:Sys.WebForms.PageRequestManagerParserErrorException:The message……

    如果你为了使页面可以达到局部刷新的效果,并且用了UpdatePanel控件,这是如果你在后台页面用到Response对象时肯呢过会抛出一下异常: 解决方法:$(document).ready(func ...

  10. 最小生成树算法(Prim,Kruskal)

    边赋以权值的图称为网或带权图,带权图的生成树也是带权的,生成树T各边的权值总和称为该树的权. 最小生成树(MST):权值最小的生成树. 生成树和最小生成树的应用:要连通n个城市需要n-1条边线路.可以 ...