我有一個Java應用程序。此應用程序的可執行jar還包含一些zip和文本文件,它們在應用程序啓動時讀取。我可以很容易地處理閱讀文本文件使用在java jar文件中讀取zip文件
getResourceAsStream
,但問題是閱讀zip文件。
我試着用下面的代碼,但是這只是增加了4次內存使用量。
// location of the file
InputStream is = ChemicalSynonyms.class.getClassLoader().getResourceAsStream(strFileName);
ZipInputStream zis = new ZipInputStream(is);
ZipEntry ze = zis.getNextEntry();
Scanner sc = new Scanner(zis);
String[] wordsArray;
while (sc.hasNextLine())
{
// split on tab and use only the first column
wordsArray = sc.nextLine().toLowerCase().split("\t");
termSet.add(wordsArray[0]);
}
sc.close();
zis.close();
is.close();
如何有效地讀取壓縮文件,該壓縮文件在同一個jar文件中。
****編輯**** 看來問題在於sc.nextLine()。toLowerCase()。split(「\ t」);我發現了幾個論壇,他們提到分裂會導致消耗大量內存。
您正在處理的zip文件有多大?這個過程將膨脹,並將所有「單詞」放入內存中的數組中。如果你正在處理大量的數據,我不確定是否存在咀嚼記憶的問題。 – slambeth
壓縮文件相對較小。總共31MB(壓縮後) – user1631306
我懷疑我沒有使用正確的方法讀取使用掃描儀的zip文件。有沒有更好的方法? – user1631306