Apache POI - SXSSF: Wohin spült es Zeilen nicht im Fenster vor der Ausgabe in Datei?

8

Verwenden Sie die folgende Dokumentation: Ссылка

Nach dieser Site:

  

SXSSF (Paket: org.apache.poi.xssf.streaming) ist eine API-kompatible Streaming-Erweiterung von XSSF, die verwendet werden soll, wenn sehr große Tabellen erstellt werden müssen und der Heap-Speicherplatz begrenzt ist. SXSSF erreicht seinen geringen Speicherbedarf, indem der Zugriff auf die Zeilen in einem verschiebbaren Fenster eingeschränkt wird, während XSSF Zugriff auf alle Zeilen im Dokument gewährt. Ältere Zeilen, die sich nicht mehr im Fenster befinden, können nicht mehr aufgerufen werden, da sie auf die Festplatte geschrieben werden.

In dem bereitgestellten Beispiel wird das Flush jedoch ausgeführt, bevor der Arbeitsmappe die Dateiposition zugewiesen wird, an der die Datei geschrieben werden soll.

%Vor%

Es stellt sich also die Frage, wo auf dem Dateisystem die Daten gespeichert werden? Wird nur eine temporäre Datei im Standardtempverzeichnis erstellt? Ist das für alle / die meisten Implementierungen sicher?

Danke

    
John B 14.09.2011, 13:59
quelle

1 Antwort

9

Die Klasse, die die Pufferung durchführt, ist SheetDataWriter in org.apache.poi.xssf.streaming.SXSSFSheet

Die magische Linie, an der Sie wahrscheinlich interessiert sind, ist:

%Vor%

In Bezug auf ist das sicher, wahrscheinlich, aber nicht sicher ... Es ist wahrscheinlich wert, einen Fehler im poi bugzilla zu öffnen und die Verwendung von org.apache.poi.util.TempFile zu aktivieren, was ein bisschen mehr Kontrolle erlaubt. Solange Sie jedoch eine gültige Eigenschaft für java.io.tmpdir angeben (oder der Standardwert für Sie sinnvoll ist), sollten Sie in Ordnung sein

    
Gagravarr 14.09.2011, 15:48
quelle

Tags und Links