12
votes

Comment puis-je convertir une chaîne en une chaîne GZIP BASE64?

J'ai essayé de comprendre en utilisant gzipoutputtreream 's et similaire mais n'a eu aucun succès avec les comprendre. Tout ce que je veux faire, c'est convertir une chaîne de caractères - "une chaîne de caractères" dans un format gzip base64. Comment puis-je faire cela?

par gzip base64 Format, je veux dire que la chaîne est d'abord comprimée à l'aide de GZIP, puis convertie en base64.


1 commentaires

Jetez un coup d'œil à Cette question


4 Réponses :


27
votes

Utilisez le CODEC Apache Commons base64OutPutStream .

Voici une classe d'échantillons: xxx

sortitrice: xxx

sous Linux, vous pouvez confirmer que cela fonctionne avec: xxx < / Pré>

(Veuillez noter que sur OSX, vous devez utiliser base64 -d au lieu de base64 -d dans la commande ci-dessus)

Quelles sorties: xxx


2 commentaires

Juste une petite note, la base64 décode avec -d. -D est utilisé pour activer la journalisation du débogage.


Merci pour votre commentaire @brandonPelfrey. Utilisez-vous Mac OS X? Sur Linux, le GNU CARUTILS BASE64 Commande accepte l'option -d pour décoder. Sur Apple Mac OS X, le < Code> base64 la commande accepte l'option -d pour décoder.



1
votes

Nous pouvons utiliser Java GzipOutputStream / GzInputStream et Apache Commons Codec Base64 Encoder et décodeur: LifElongProgrammer.blogspot.com


0 commentaires

0
votes

Java 9


0 commentaires

0
votes

Ceci est une variante de Cette réponse mais sans les trucs obsolètes et à l'aide de Vavr Essayez code> :

public static Try<String> compress(String input) {
  return Try.of(() -> {
    ByteArrayOutputStream rstBao = new ByteArrayOutputStream();
    GZIPOutputStream zos = new GZIPOutputStream(rstBao);
    zos.write(input.getBytes(StandardCharsets.UTF_8));
    zos.close();
    return Base64.encodeBase64String(rstBao.toByteArray());
   });

public static Try<String> decompress(String input) {
  return Try.of(() -> IOUtils.toString(new GZIPInputStream(
    new ByteArrayInputStream(Base64.decodeBase64(input))),        
      StandardCharsets.UTF_8));
  }
}

// unit test
@Test
public void testStringCompression() {
  var data = "I finally rest. And watch the sun rise on a grateful universe. The hardest choices require the strongest wills.";
  var cs = Utilities.compress(data);
  assertThat(cs.isSuccess());
  var us = Utilities.decompress(cs.get());
  assertThat(us.isSuccess() && us.get().equals(data));
}


0 commentaires