2 Stimmen

Angemessene Zeit zum Öffnen des Streams während der Entpackung einer Datei, die an einen Worker-Pool übergeben werden soll

Dies könnte eher eine theoretische Frage sein. Ich habe ein Szenario, in dem eine komprimierte Datei (~2 GB) in eine größere Datei (~22 GB) dekomprimiert wird. Dieser Prozess dauert ungefähr 20 Minuten, was wiederum bedeutet, dass ich ungefähr 19 Minuten und 59 Sekunden jedes Mal verschwende, wenn dieser Prozess ausgeführt wird. Meine Frage ist folgende: Ist es möglich, einen Stream aus der Datei zu öffnen, die dekomprimiert wird, und die Informationen an ein separates Programm weiterzugeben, das die Daten manipuliert? Grundsätzlich ist jeder Zeile in der Datei ein Datensatz, aber ich konnte keine Technik finden, um festzustellen, wann eine Zeile während der Dekomprimierung vollständig decodiert wurde. Allgemeine Algorithmen oder Java-Bibliotheken sind von Wert.

3voto

Keith Randall Punkte 22725

Ja, das ist einfach. In Unix könnten Sie das tun

bzcat compressedfile.bz2 | mainprogram

Dann kann Ihr Hauptprogramm den dekomprimierten Stream auf der Standardeingabe lesen. Ähnliche Befehlszeilenprogramme existieren für zip und gzip.

Wenn das Hauptprogramm anstelle der Standardeingabe aus einer Datei lesen muss, verwenden Sie eine benannte Pipe.

Wenn Sie Windows verwenden, gibt es möglicherweise ähnliche Tools oder auch nicht.

3voto

Mark Adler Punkte 87756

Sie können java.util.zip's GZIPInputStream verwenden, um die gzip-Datei sequentiell zu lesen. Dann können Sie Ihre eigene Pufferung implementieren und Zeilen extrahieren, oder BufferedReader mit der Methode readLine verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X