2012-06-04 10 views
10

Próbowałem wyszukiwać i nie mogłem znaleźć niczego. Co próbuję zrobić, to przeglądam listę, na której konstruuję ciąg znaków z kombinacji elementów z wielu list. Następnie chcę zrzucić te łańcuchy do spakowanego pliku gzip. Zrobiłem to działając po prostu rzucając go do zwykłego pliku tekstowego ascii, ale nie mogę sprawić, żeby działał z gzipoutputstream. Więc w zasadzie,Ciąg do GZIPOutputStream

Loop utworzyć ciąg zrzutu ciąg do pliku gzip ENDLOOP

Jeśli to możliwe, chciałbym, aby uniknąć dumpingu w pliku tekstowym, a następnie gzipping go od tych plików będzie prawie 100 meg każdy .

+2

Proszę nam pokazać kod już próbował, jak to nie działa, etc. –

Odpowiedz

16

Tak, możesz to zrobić bez problemu. Wystarczy użyć programu piszącego, aby przekonwertować łańcuchy znakowe na bajtowy strumień gzip.

BufferedWriter writer = null; 
    try { 
     GZIPOutputStream zip = new GZIPOutputStream(
      new FileOutputStream(new File("tmp.zip"))); 

     writer = new BufferedWriter(
      new OutputStreamWriter(zip, "UTF-8")); 

     String[] data = new String[] { "this", "is", "some", 
      "data", "in", "a", "list" }; 

     for (String line : data) { 
      writer.append(line); 
      writer.newLine(); 
     } 
    } finally {   
     if (writer != null) 
      writer.close(); 
    } 

również pamiętać, gzip tylko kompresuje strumienia, jeśli chcesz pliki osadzone, zobacz ten wpis: gzip archive with multiple files inside