0

実際にアーカイブを抽出することなく、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します。または、これを超えると、データ抽出関数がエラーを返します。000020000500008file not found

ファイル名が異なるファイルの組み合わせをいくつか試しましたが、結果は同じでした。最初の 3 つのファイルは正常に機能しますが、ファイルの名前に関係なく、他のファイルは機能しません。

ファイル名のみを含む100個のテスト.xmlファイルを含む.zipを作成し、これらの作業から正常に抽出しようとしたため、メモリの問題であると思われましたが、修正方法がわかりません。

4

0 に答える 0