目前我有一个包含数千个.xml文件的zipfile,提取的文件夹大小为1.5GB。 我有一个函数将数据与此zip文件中的特定文件进行匹配。然后,我想阅读此特定文件并提取其他数据。
我的问题: 有没有办法从存档中提取这些特定文件而不解压缩整个存档?
内置的unzip.m函数只能用于解压缩整个文件,因此无法工作,所以我想我必须使用COM接口或其他方法。
Matlab版本:R2013a
在搜索解决方案时,我发现了这一点:Read the data of CSV file inside Zip File without extracting the contents in Matlab
但我无法在答案中获得适合我情况的代码
编辑:
归功于Hoki和Intelk
zipFilename = 'HMDB.zip';
zipJavaFile = java.io.File(zipFilename);
zipFile=org.apache.tools.zip.ZipFile(zipJavaFile);
entries=zipFile.getEntries;
cnt=1;
while entries.hasMoreElements
tempObj=entries.nextElement;
file{cnt,1}=tempObj.getName.toCharArray';
cnt=cnt+1;
end
ind=regexp(file,'$*.xml$');
ind=find(~cellfun(@isempty,ind));
file=file(ind);
file = cellfun(@(x) fullfile('.',x),file,'UniformOutput',false);
不要忘记
zipFile.close