Я пытаюсь сжать Strings
, записывая их в файлы (как Strings
) и распаковывая эти файлы. Для сжатия я написал эту функцию:
public static String compress(String s) throws IOException {
byte[] by = Snappy.compress(s, StandardCharsets.UTF_8);
return new String(by, StandardCharsets.UTF_8);
}
а затем, для распаковки,
public static String uncompress(String s) throws IOException {
byte[] by = s.getBytes(StandardCharsets.UTF_8);
return Snappy.uncompressString(by, StandardCharsets.UTF_8);
}
Но я получаю FAILED_TO_UNCOMPRESS(5)
, и, глядя на данные, Snappy.compress(s, StandardCharsets.UTF_8)
не дает того же результата, что и применение getBytes(StandardCharsets.UTF_8)
к данным, сжатым с помощью моей функции compress
. Ты знаешь почему? И как я мог сжимать и распаковывать в Strings
? Спасибо!
String
в методеcompress
? Строки не подходят для хранения произвольных байтов. Сделайте так, чтобы методcompress
возвращалbyte[]
вместоString
, а методuncompress
принимал в качестве аргументаbyte[]
вместоString
. Если вам действительно нужно хранить байты в строке, вам придется использовать что-то вроде кодировки base 64. - person Jesper   schedule 28.06.2017