zu komprimieren Ich habe eine große Datei (~ 450 Mbyte) durch die Java-Klasse ZipOutputStream komprimieren müssen. Diese große Dimension verursacht ein Problem des "OutOfMemory" -Fehlers meines JVM Heap Space. Dies geschieht, weil die Methode "zos.write (...)" den gesamten Dateiinhalt vor der Komprimierung in einem internen Byte-Array speichert.Um eine große Datei in einem ZIP mit Java
origin = new BufferedInputStream(fi, BUFFER);
ZipEntry entry = new ZipEntry(filePath);
zos.putNextEntry(entry);
int count;
while ((count = origin.read(data, 0, BUFFER)) != -1)
{
zos.write(data, 0, count);
}
origin.close();
Die natürliche Lösung wird den Heap-Speicherplatz des JVM zu vergrößern, aber ich würde gerne wissen, ob es eine Methode ist, diese Daten in einer Streaming-Weise zu schreiben. Ich brauche keine hohe Kompressionsrate, damit ich den Algorithmus auch ändern kann.
hat jemand eine Idee?
Wie groß ist PUFFER? –
Wie ich schrieb 2048 – robob