実際にアーカイブを抽出することなく、60000 以上の .xml ファイルを含む .zip から .xml ファイルを抽出しようとしています。各 .xml ファイルには、.xmlHMDB#.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
が の場合、コードは正常に動作hmdbid
します。または、これを超えると、データ抽出関数がエラーを返します。00002
00005
00008
file not found
ファイル名が異なるファイルの組み合わせをいくつか試しましたが、結果は同じでした。最初の 3 つのファイルは正常に機能しますが、ファイルの名前に関係なく、他のファイルは機能しません。
ファイル名のみを含む100個のテスト.xmlファイルを含む.zipを作成し、これらの作業から正常に抽出しようとしたため、メモリの問題であると思われましたが、修正方法がわかりません。