J'ai essayé de comprendre en utilisant par gzip base64 Format, je veux dire que la chaîne est d'abord comprimée à l'aide de GZIP, puis convertie en base64. P> gzipoutputtreream code>'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? P>
4 Réponses :
Utilisez le CODEC Apache Commons base64OutPutStream code>
.
Voici une classe d'échantillons: p> sortitrice: p> sous Linux, vous pouvez confirmer que cela fonctionne avec: p> (Veuillez noter que sur OSX, vous devez utiliser Quelles sorties: p> base64 -d code> au lieu de
base64 -d code> dans la commande ci-dessus) p>
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 CODE> Commande
accepte l'option -d code> pour décoder. Sur Apple Mac OS X, le < Code> base64 code> la commande accepte l'option
-d code> pour décoder.
Nous pouvons utiliser Java GzipOutputStream / GzInputStream et Apache Commons Codec Base64 Encoder et décodeur: LifElongProgrammer.blogspot.com p>
base64 code>
- Depuis: 1.8 Li>
ReadallBytes Code>
- Depuis: 1.9 Li>
gzipinputtream Code>
et GzipOutPutStream Code>
- Depuis: 1.1 Li>
ul> Voir aussi: < Un href = "https://stackoverflow.com/a/66403674/14940971"> codage comme base64 en Java sup> p> h2>
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));
}
Jetez un coup d'œil à Cette question