Не удается открыть файл из списка имен файлов, когда индекс превышает определенное значение при использовании matlab

Я пытаюсь извлечь файлы.xml из.zip, содержащего 60000+ .xml файлов без необходимости фактически извлекать архив. Каждый XML-файл имеет следующий формат имен HMDB#.xml с 5-значным номером, заменяющим #,

Каждый XML-файл имеет размер около 25 КБ +-5 КБ.

Я использую следующий код, чтобы сделать это в данный момент. 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

Код работает нормально, когда hmdbid является 00002,00005 или же 00008 когда он превышает это, моя функция извлечения данных возвращает file not found ошибка.

Я пробовал несколько комбинаций файлов с разными именами файлов с одинаковым результатом. Первые 3 файла работают нормально, но другие не работают, независимо от имени файла.

Я попытался создать.zip, содержащий 100 тестовых XML-файлов, содержащих только его имя, и извлекать из них все нормально, что приводит меня к мысли, что это проблема с памятью, но я не уверен, как ее исправить.

0 ответов

Другие вопросы по тегам