Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在matlab中从zip文件中提取特定文件_Matlab_Zip_Extract - Fatal编程技术网

在matlab中从zip文件中提取特定文件

在matlab中从zip文件中提取特定文件,matlab,zip,extract,Matlab,Zip,Extract,目前我有一个包含数千个.xml文件的zipfile,该文件夹的大小为1.5gb。 我有一个函数,可以将数据与此zip文件中的特定文件相匹配。然后我想读取这个特定的文件并提取额外的数据 我的问题: 是否有任何方法可以从存档中提取这些特定文件而不解压缩整个存档 内置的unzip.m函数只能用于解压整个文件,因此无法正常工作,因此我认为必须使用COM接口或其他方法 Matlab版本:R2013a 在搜索解决方案时,我发现: 但我无法在答案中找到适合我情况的代码 编辑: 归功于Hoki和Intelk z

目前我有一个包含数千个.xml文件的zipfile,该文件夹的大小为1.5gb。 我有一个函数,可以将数据与此zip文件中的特定文件相匹配。然后我想读取这个特定的文件并提取额外的数据

我的问题: 是否有任何方法可以从存档中提取这些特定文件而不解压缩整个存档

内置的unzip.m函数只能用于解压整个文件,因此无法正常工作,因此我认为必须使用COM接口或其他方法

Matlab版本:R2013a

在搜索解决方案时,我发现:

但我无法在答案中找到适合我情况的代码

编辑:

归功于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

什么代码不起作用?@Dan,只是一个小的输入错误@Clanrat,只需将行
while entries.hasNext
更改为
while entries.hasMoreElements
即可,一切正常。这实际上是一个很好的把戏。尽管链接代码中没有提到一件重要的事情:使用后不要忘记关闭java zipfile(
zipfile.close
),否则它将被锁定,直到您关闭Matlab。@Hoki,谢谢!工作得很好!可能重复的