2 Stimmen

Wie man komprimierte Daten in Java verarbeitet

Ich habe einige Daten, die in einer unkomprimierten Datei mehr als 50 MB einnehmen, sich aber auf weniger als die Hälfte eines MB komprimieren lassen, wenn gzip verwendet wird.

Der Großteil dieser Daten sind numerische Daten. Ich versuche herauszufinden, wie ich diese Daten verarbeiten kann, ohne sie komplett zu dekomprimieren. Wenn zum Beispiel diese Daten pro Datensatz ein paar Zeichenketten und etwa 5 numerische Werte enthalten, gibt es eine Möglichkeit, eine einzelne Zeile (oder eine kleine Menge von Zeilen) zu dekomprimieren, zu verarbeiten und dann zu verwerfen?

Unix bietet Dienstprogramme wie zcat, grep usw., die direkt mit komprimierten Daten arbeiten, das würde ich gerne auch in Java tun.

Danke

7voto

Aaron Digulla Punkte 308693

Verpacken Sie einfach Ihren FileInputStream in einen GZipInputStream:

public static BufferedReader createReader (File f, String encoding) throws IOException
{
    try
    {
        InputStream in = new FileInputStream (f);
        if (f.getName ().endsWith (".gz"))
            in = new GZIPInputStream (in, 10240);

        return new BufferedReader (new InputStreamReader (in, encoding));
    }
    catch (UnsupportedEncodingException e)
    {
        throw new RuntimeException("Fehlende Kodierung "+encoding, e);
    }
}

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