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

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

以前从未遇到过用MATLAB批处理文件的情况,此次项目需要批量将二进制数据文件导入matlab进行svm分类,现将matlab遍历子文件夹及其文件的方法记录下来。


文件目录结构

/maindir
    |-- subdir1
        |-- datafile1.dat
        |-- datafile2.dat
    |-- subdir2
        |-- datafiel3.dat
        |-- datafiel4.dat
    |-- subdir3
        |-- datafile5.dat
        |-- datafile6.dat

主文件夹maindir下含有三个子文件夹,子文件夹分别包含两个二进制数据文件

函数dir

可以使用函数dir,D = DIR(‘directory_name‘)返回一个结构数组,包含了文件夹directory_name下的子文件夹和子文件的一些信息,第1个成员是文件名,第4个成员表示是否为文件夹。

要注意的是第1个数组元素和第2个数组元素分别是’.’和’..’,表示当前目录和上层目录。

代码实现

maindir = ‘D:\MATLAB\project‘;
subdir = dir( maindir );

for i = 1 : length( subdir )
    if( isequal( subdir( i ).name, ‘.‘ )||...
        isequal( subdir( i ).name, ‘..‘)||...
        ~subdir( i ).isdir)               % 如果不是目录则跳过
        continue;
    end
    subdirpath = fullfile( maindir, subdir( i ).name, ‘*.dat‘ );
    dat = dir( subdirpath )               % 子文件夹下找后缀为dat的文件

    for j = 1 : length( dat )
        datpath = fullfile( maindir, subdir( i ).name, dat( j ).name);
        fid = fopen( datpath );
        % 此处添加你的对文件读写操作 %
    end
end

函数uigetdir

由于前面maindir需要指定路径,可能不是太方便。

使用uigetdir可以方便的通过对话框选择文件夹,返回值为文件夹路径名。代码如下:

maindir = uigetdir( ‘选择一个文件夹‘ );


上面的例子比较简单,只涉及到两层目录以及指定格式的文件。

对于多层目录,以及多种格式文件的处理,则可以采用层次遍历与深度遍历两种方法实现。具体操作及例子见连接MATLAB对文件夹的层次遍历和深度遍历,不再详细阐述。

时间: 2025-01-16 02:46:23

MATLAB遍历子文件夹及其下文件的相关文章

BAT 遍历文件夹和子文件夹下所有文件

echo off & color 0A ::指定起始文件夹 set DIR="%cd%" echo DIR=%DIR% :: 参数 /R 表示需要遍历子文件夹,去掉表示不遍历子文件夹 :: %%f 是一个变量,类似于迭代器,但是这个变量只能由一个字母组成,前面带上%% :: 括号中是通配符,可以指定后缀名,*.*表示所有文件 for /R %DIR% %%f in (*.txt) do ( echo %%f ) pause

Java 遍历指定文件夹及子文件夹下的文件

/** * 遍历指定文件夹及子文件夹下的文件 * * @author testcs_dn * @date 2014年12月12日下午2:33:49 * @param file 要遍历的指定文件夹 * @param collector 符合条件的结果加入到此List<File>中 * @param pathInclude 路径中包括指定的字符串 * @param fileNameInclude 文件名称(不包括扩展名)中包括指定的字符串 * @param extnEquals 文件扩展名为指定字

JAVA之File类 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件

package ioTest.io3; import java.io.File; /* * 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件 . * 并将文件夹和文件名称打印在控制台上面.并且要显示文件目录的层级 * 注:运用了递归的算法. */ public class FileDemo3 { public static void main(String[] args) { File dir=new File("F:\\黑马学习日程\\"); //File dir=new Fi

列出某文件夹及其子文件夹下面的文件,并可根据扩展名过滤

/** * 列出某文件夹及其子文件夹下面的文件,并可根据扩展名过滤 * * @param path */ public static void list(File path) { if (!path.exists()) { System.out.println("文件名称不存在!"); } else { if (path.isFile()) { if (path.getName().toLowerCase().endsWith(".pdf") || path.get

Java中新建子文件夹和新建文件

File file = new File("地址"); file.mkdirs(); //新建文件夹,当没有父文件夹时,但是不会自动创建父文件夹 file.mkdirs(); //新建文件夹,当没有父文件夹时,但是会创建父文件夹, //如果文件不存在,则创建一个新文件if(!file.isFile()){    file.createNewFile();} Java中新建子文件夹和新建文件

java 打印流 递归复制子文件子文件夹 不同编码文件复制到同一文件中 序列化流反序列化流

package com.swift.jinjie; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.PrintStream; /*从键盘输入一个文件夹路径,利用打印流将该文件夹下的所有文件(包括子文件夹)复制到D盘下temp文件夹下.*/ public class PrintAllT

Java中递归的优缺点,Java写一个递归遍历目录下面的所有文件包括子文件夹里边的文件。

题目: 遍历出aaa文件夹下的文件 首先分析思路: 1.首先判断这个文件夹是否为文件,通过isFile()函数可以判断是否为文件. 2.然后通过isDirectory判断是否为目录. 3.如果是目录就使用递归遍历目录 代码如下: 1 import java.io.File; 2 3 public class ZuoYe { 4 public static void main(String[] args) { 5 //创建file对象 6 File f=new File("d://新建文件夹&qu

MATLAB 读子文件夹下文件

把符合的文件路径保存到fp中,FileType为指定文件的类型,MainPath为文件夹的路径 function Path=ReadFile(fp,MainPath,FileType)%%%%%%%%%%%%%%%MainPath为主路径,FileType为需要读取的文件类型PathFileFormation=dir(MainPath);PathNumber=numel(PathFileFormation);for LoopPathNumber=1:PathNumber if( isequal(

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

OpenCV2.4.X版本提供了三个函数来读取指定目录内的文件,它们分别是: (1)GetListFiles:读取指定目录内所有文件,不包含子目录: (2)GetListFilesR:读取指定目录及其子目录(仅一级子目录)内所有文件: (3)GetListFolders:读取指定目录内所有目录,不包含文件: 然而,Matlab中并没有对应的函数,有人可能会说dir不就可以吗,但dir返回的值还进行一些处理我们才能用的,如移除返值中包含的父目录及当前目录.这里我就写了一段代码来读取指定目录及其子目