当使用matlab时索引超过某个值时,无法从文件名列表中打开文件

时间:2015-07-02 14:18:28

标签: xml matlab zip matlab-java

我正在尝试从包含60000 + .xml文件的.zip中提取.xml文件,而不必实际提取存档。每个.xml文件都具有以下命名格式HMDB#.xml,其中5位数字代替#

每个.xml文件大小约为25kb + -5kb

我目前正在使用以下代码执行此操作。 path是包含.zip文件目录的字符串,hmdbid是包含5位数字的字符串:

%// Opens the zip file and creates temporary directories for the files so data
%// can be extracted.

function data=partzip(path,hmdbid)

    zipFilename = path;
    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,sprintf('$*%s.xml$',hmdbid));
    ind=find(~cellfun(@isempty,ind));
    file=file(ind);
    file = cellfun(@(x) fullfile('.',x),file,'UniformOutput',false);

    data=extract_data(file{1});
    zipFile.close;
end

使用包含以下内容的.zip文件测试代码时

  • HMDB00002.xml
  • HMDB00005.xml
  • HMDB00008.xml
  • HMDB00010.xml
  • HMDB00012.xml

hmdbid000020000500008超出此范围时,代码正常工作我的数据提取函数返回file not found错误。

我尝试了几种具有不同文件名的文件组合,结果相同。无论文件名是什么,前3个文件都可以正常工作,但其他文件没有。

我已经尝试创建一个包含100个测试.xml文件的.zip文件,其中只包含它的文件名并从这些工作中提取,这让我相信这是一个内存问题,但我不知道如何修复它。

0 个答案:

没有答案