Не удается открыть файл из списка имен файлов, когда индекс превышает определенное значение при использовании 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-файлов, содержащих только его имя, и извлекать из них все нормально, что приводит меня к мысли, что это проблема с памятью, но я не уверен, как ее исправить.