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;
主文件夹下的子文件夹:
某一子文件夹下的txt数据文件:
执行合并之后:
多次执行合并之后从文件大小可知其是子文件夹中txt数据是追加到已合并的子文件夹.txt中的。
<本文实现源码参考源>http://wheartbeating.blog.163.com/blog/static/2044620422013102811336829/