使用matlab解压不同层次文件夹中.gz压缩包并另存
目的:
存在一个文件夹,文件夹中存在子文件夹和压缩包,我们希望将这些压缩包全部解压,并存在其他相指定的文件中。
步骤
1、读取文件夹中的每一个文件;
2、判断其中是否存在压缩文件,如有,则依次将其解压;
3、依次打开不是压缩文件的子文件夹,读取子文件夹中的子文件并重复步骤2。
代码
%压缩包所在文件地址
Filedir='E:\XXX\XXXX';
%要解压到的文件地址
Extractdir='E:\YYYY\YY\YYYYY';
%读取文件夹中的全部文件夹名
files=dir(fullfile(Filedir));
fileNames={files.name};
%因为我读出来的文件前两个是 · 和 ··
for i = 3:length(fileNames)
%修改相应的路径名,将子文件夹名添加到之前的地址中
Filedir2 = [Filedir,'\',fileNames{i}];
Extractdir2 = [Extractdir,'\',fileNames{i}];
%创建解压的目标文件夹,若不存在,则创建一个
if ~exist(Extractdir2,'dir')
mkdir(Extractdir2);
end
if ~isempty(strfind(fileNames{i},'*.gz'))
%判断是否有.gz文件,有的话就解压
gunzip(Filedir3,Extractdir3);
end
%读取子文件夹中的子文件夹
files2 = dir(fullfile(Filedir2));
fileNames2 ={files2.name};
%假设这个文件夹只有三层结构吧
for j = 3:length(fileNames2)
Filedir3 = [Filedir2,'\',fileNames2{j}];
Extractdir3 = [Extractdir2,'\',fileNames2{j}];
%创建解压的目标文件夹,若不存在,则创建一个
if ~exist(Extractdir3,'dir')
mkdir(Extractdir3);
end
%将文件夹下的所有压缩包解压到目标文件夹
gunzip(Filedir3,Extractdir3);
end
% filenames{i}
% end
end