public static String compressString(String str) throws IOException{
if (str == null || str.length() == 0) {
return str;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(out);
gzip.write(str.getBytes());
gzip.close();
Gdx.files.local("gziptest.gzip").writeString(out.toString(), false);
return out.toString();
}
Kiedy zapisać ten ciąg do pliku i uruchom gunzip -d file.txt
w Uniksie, narzeka:Kompresja ciąg do gzip w Javie
gzip: gzip.gz: not in gzip format
Dlaczego po prostu nie użyjesz [FileOutputStream (zamiast ByteArrayOutputStream)] (http://stackoverflow.com/questions/5994674/java-save-string-as-gzip-file)? Czy próbowałeś, co się wtedy stanie? –
Jest to biblioteka libgdx, która jest biblioteką do obsługi wielu platform. Zapisałem go tylko do pliku, aby rozwiązać problem. Próbowałem wysłać ciąg za pośrednictwem żądania HTTP POST do mojego serwera kolb, ale strona serwera skarżyła się, że ciąg nie jest prawidłowy gzip. – kelorek
Domyślam się, że problemem jest konwersja skompresowanych danych na ciąg znaków. Myślę, że powinieneś traktować wynik jako bajt []. Czy libgdx może zapisać bajt [] do pliku? –