matlab批量合并txt文件

   1:  %% merge.m
   2:  %%%%Main程序%%%%%%
   3:  %%%%%%
   4:  %%%%%%本程序合并完各个子文件夹中的txt到主文件目录下,并且合并的文件以子文件夹名字命名
   5:  %%%%%%同时,每次合并时,如果主文件夹已存在某一个子文件夹名字A的txt文件,那么此次合并,将把当前
   6:  %%%%%%这个子文件夹A中所有的txt文件追加到子文件夹A.txt文件的末尾处。
   7:  clear;
   8:  clc; 
   9:  % MainFolder='D:\Master-FTP\磁流变阻尼器实验\'; %%设置主目录,注意结尾要有个'\'
  10:  MainFolder='E:\txt文件夹\';
  11:  dirOutput=dir(fullfile(MainFolder)); %%获取主目录下所有文件夹与文件
  12:   
  13:  num=size(dirOutput);%%获取数量
  14:  for i=1:num(1)
  15:      if dirOutput(i,1).isdir == 1 %判断是否为文件夹
  16:          a1=~ strcmp(dirOutput(i,1).name,'.'); %%排除'.'和'..'的文件夹
  17:          a2=~ strcmp(dirOutput(i,1).name,'..');
  18:          if  a1 &&   a2;
  19:              dirOutput(i,1).name;
  20:          y=TAllFileInAFolder(MainFolder,dirOutput(i,1).name);
  21:          end
  22:      end
  23:  end
  24:  disp('合并完成');

 

   1:  %% TAllFileInAFolder.m
   2:  function yyy=TAllFileInAFolder(MainFolderName,SubFolderName) %%合并子文件夹下所有txt,存到主文件夹下,以子文件夹命名
   3:  fileFolder=fullfile(MainFolderName,SubFolderName);
   4:  dirOutput=dir(fullfile(fileFolder,'*.txt'));
   5:  fileNames={dirOutput.name}';
   6:  num=size(dirOutput);
   7:   
   8:  file2=strcat(fileFolder,'\..\',SubFolderName,'.txt');%%保存路径
   9:  fid2=fopen(file2,'a');
  10:  for i=1:num(1)
  11:      file1=strcat(fileFolder,'\',fileNames{i,1});%%读取的文件
  12:      fid=fopen(file1,'r');
  13:      %txt=fscanf(fid,'%s');
  14:      txt=fread(fid,inf);
  15:      fclose(fid);
  16:      %fprintf(fid2,'%s',txt);
  17:      fwrite(fid2,txt);
  18:      %fprintf(fid2,'\r\n')表示在写完每个txt文件之后,写入一个回车换行符,得到下一个txt从新的一行开始写
  19:      fprintf(fid2,'\r\n'); 
  20:  end
  21:  fclose(fid2);
  22:  yyy=1;

主文件夹下的子文件夹:

image

某一子文件夹下的txt数据文件:

image

执行合并之后:

image

多次执行合并之后从文件大小可知其是子文件夹中txt数据是追加到已合并的子文件夹.txt中的。

image

<本文实现源码参考源>http://wheartbeating.blog.163.com/blog/static/2044620422013102811336829/

posted @ 2014-05-21 23:56  AI Algorithms  阅读(3765)  评论(0编辑  收藏  举报