Java8 Base64

Java 8 新特性Nuevas características de Java 8


En Java 8, la codificación Base64 se ha convertido en el estándar de la biblioteca de clases de Java.

Java 8 incluye codificadores y decodificadores para la codificación Base64.

La clase de utilidad Base64 proporciona un conjunto de métodos estáticos para obtener los siguientes tres tipos de codificadores/decodificadores BASE64:

  • Básico:La salida se asigna a un conjunto de caracteres A-Za-z0-9+/, la codificación no agrega ningún marcador de línea, y la decodificación de la salida solo admite A-Za-z0-9+/.
  • URL:La salida se asigna a un conjunto de caracteres A-Za-z0-9+_, y es segura para URL y archivos.
  • MIME:La salida se asigna a un formato compatible con MIME. La salida no supera los 76 caracteres por línea y utiliza '\r' seguido de '\n' como separador. La salida codificada no tiene separador de línea al final.

Clases anidadas

N.º Clase anidada y descripción
1 static class Base64.Decoder

Esta clase implementa un decodificador para decodificar datos de bytes utilizando la codificación Base64.

2 static class Base64.Encoder

Esta clase implementa un codificador para codificar datos de bytes utilizando la codificación Base64.

Métodos

N.º Nombre del método y descripción
1 static Base64.Decoder getDecoder()

Devuelve un Base64.Decoder, que decodifica utilizando el esquema de codificación base64 básico.

2 static Base64.Encoder getEncoder()

Devuelve un Base64.Encoder, que codifica utilizando el esquema de codificación base64 básico.

3 static Base64.Decoder getMimeDecoder()

Devuelve un Base64.Decoder, que decodifica utilizando el esquema de codificación base64 tipo MIME.

4

static Base64.Encoder getMimeEncoder()

Devuelve un Base64.Encoder, que codifica utilizando el esquema de codificación base64 tipo MIME.

5 static Base64.Encoder getMimeEncoder(int lineLength, byte[] lineSeparator)

Devuelve un Base64.Encoder, que codifica utilizando el esquema de codificación base64 tipo MIME, y se puede especificar mediante parámetros la longitud de cada línea y el separador de línea.

6 static Base64.Decoder getUrlDecoder()

Devuelve un Base64.Decoder, que decodifica utilizando el esquema de codificación base64 seguro para URL y nombres de archivo.

7 static Base64.Encoder getUrlEncoder()

Devuelve un Base64.Encoder, que codifica utilizando el esquema de codificación base64 seguro para URL y nombres de archivo.

Nota:Muchos métodos de la clase Base64 se heredan dejava.lang.Objectla clase.


Ejemplo de Base64

El siguiente ejemplo demuestra el uso de Base64:

Archivo Java8Tester.java

import java.util.Base64; import java.util.UUID; import java.io.UnsupportedEncodingException; public class Java8Tester { public static void main(String args[]){ try { //Usar codificación básica String base64encodedString = Base64.getEncoder().encodeToString("ejemplo?java8".getBytes("utf-8")); System.out.println("Cadena codificada en Base64 (básico):" + base64encodedString); //Decodificación byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString); System.out.println("Cadena original:" + new String(base64decodedBytes, "utf-8")); base64encodedString = Base64.getUrlEncoder().encodeToString("ejemplo?java8".getBytes("utf-8")); System.out.println("Cadena codificada en Base64 (URL):" + base64encodedString); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < 10; ++i) { stringBuilder.append(UUID.randomUUID().toString()); } byte[] mimeBytes = stringBuilder.toString().getBytes("utf-8"); String mimeEncodedString = Base64.getMimeEncoder().encodeToString(mimeBytes); System.out.println("Cadena codificada en Base64 (MIME):" + mimeEncodedString); }catch(UnsupportedEncodingException e){ System.out.println("Error :" + e.getMessage()); } } }

Ejecute el script anterior, el resultado de salida es:

$ javac Java8Tester.java 
$ java Java8Tester
原始字符串: ejemplo?java8
Base64 编码字符串 (URL) :VHV0b3JpYWxzUG9pbnQ_amF2YTg=
Base64 编码字符串 (MIME) :M2Q4YmUxMTEtYWRkZi00NzBlLTgyZDgtN2MwNjgzOGY2NGFlOTQ3NDYyMWEtZDM4ZS00YWVhLTkz
OTYtY2ZjMzZiMzFhNmZmOGJmOGI2OTYtMzkxZi00OTJiLWEyMTQtMjgwN2RjOGI0MTBmZWUwMGNk
NTktY2ZiZS00MTMxLTgzODctNDRjMjFkYmZmNGM4Njg1NDc3OGItNzNlMC00ZWM4LTgxNzAtNjY3
NTgyMGY3YzVhZWQyMmNiZGItOTIwZi00NGUzLTlkMjAtOTkzZTI1MjUwMDU5ZjdkYjg2M2UtZTJm
YS00Y2Y2LWIwNDYtNWQ2MGRiOWQyZjFiMzJhMzYxOWQtNDE0ZS00MmRiLTk3NDgtNmM4NTczYjMx
ZDIzNGRhOWU4NDAtNTBiMi00ZmE2LWE0M2ItZjU3MWFiNTI2NmQ2NTlmMTFmZjctYjg1NC00NmE1
LWEzMWItYjk3MmEwZTYyNTdk

Java 8 新特性Nuevas características de Java 8

Otras extensiones