Java 8 Base64: Codificação Simple, URL e MIME Simplificada
Com o Java 8, o Base64 ganhou suporte nativo. Agora há encoders e decoders embutidos para três tipos de codificação Base64:
Simple — Saída mapeada para caracteres A-Za-z0-9+/. O encoder não adiciona quebra de linha; o decoder rejeita caracteres fora desse conjunto.
URL — Saída mapeada para A-Za-z0-9+_. Segura para URLs e nomes de arquivo.
MIME — Formato amigável a MIME: linhas de no máximo 76 caracteres, separadas por
\r\n. Sem separador no final.
Classes Aninhadas
| Nº | Classe Aninhada e Descrição |
|---|---|
| 1 | static class Base64.Decoder Implementa decoder para decodificar dados byte usando o esquema Base64 conforme RFC 4648 e RFC 2045. |
| 2 | static class Base64.Encoder Implementa encoder para codificar dados byte usando o esquema Base64 conforme RFC 4648 e RFC 2045. |
Métodos Principais
| Nº | Método e Descrição |
|---|---|
| 1 | static Base64.Decoder getDecoder() Retorna decoder para esquema Basic. |
| 2 | static Base64.Encoder getEncoder() Retorna encoder para esquema Basic. |
| 3 | static Base64.Decoder getMimeDecoder() Retorna decoder para esquema MIME. |
| 4 | static Base64.Encoder getMimeEncoder() Retorna encoder para esquema MIME. |
| 5 | static Base64.Encoder getMimeEncoder(int lineLength, byte[] lineSeparator) Retorna encoder MIME com comprimento de linha e separadores personalizados. |
| 6 | static Base64.Decoder getUrlDecoder() Retorna decoder para esquema URL/Filename safe. |
| 7 | static Base64.Encoder getUrlEncoder() Retorna encoder para esquema URL/Filename safe. |
Herda métodos de java.lang.Object.
Exemplo Base64
Crie o programa em C:/JAVA.
Java8Tester.java
import java.util.Base64;
import java.util.UUID;
import java.io.UnsupportedEncodingException;
public class HelloWorld {
public static void main(String args[]) {
try {
// Codificação básica
String base64encodedString = Base64.getEncoder().encodeToString(
"TutorialsPoint?java8".getBytes("utf-8"));
System.out.println("Base64 Codificado (Basic): " + base64encodedString);
// Decodificação
byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);
System.out.println("String Original: " + new String(base64decodedBytes, "utf-8"));
// Codificação URL
base64encodedString = Base64.getUrlEncoder().encodeToString(
"TutorialsPoint?java8".getBytes("utf-8"));
System.out.println("Base64 Codificado (URL): " + base64encodedString);
// Codificação MIME
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("Base64 Codificado (MIME): " + mimeEncodedString);
} catch (UnsupportedEncodingException e) {
System.out.println("Erro: " + e.getMessage());
}
}
}
Verificando o Resultado
C:\JAVA>javac Java8Tester.java C:\JAVA>java Java8Tester
Saída (exemplo):
Base64 Codificado (Basic): VHV0b3JpYWxzUG9pbnQ/amF2YTg= String Original: TutorialsPoint?java8 Base64 Codificado (URL): VHV0b3JpYWxzUG9pbnQ_amF2YTg= Base64 Codificado (MIME): YmU3NWY2ODktNGM5YS00ODlmLWI2MTUtZTVkOTk2YzQ1Njk1Y2EwZTg2OTEtMmRiZC00YTQ1LWJl NTctMTI1MWUwMTk0ZWQyNDE0NDAwYjgtYTYxOS00NDY5LTllYTctNjc1YzE3YWJhZTk1MTQ2MDQz NDItOTAyOC00ZWI0LThlOTYtZWU5YzcwNWQyYzVhMTQxMWRjYTMtY2MwNi00MzU0LTg0MTgtNGQ1 MDkwYjdiMzg2ZTY0OWU5MmUtZmNkYS00YWEwLTg0MjQtYThiOTQxNDQ2YzhhNTVhYWExZjItNjU2 Mi00YmM4LTk2ZGYtMDE4YmY5ZDZhMjkwMzM3MWUzNDMtMmQ3MS00MDczLWI0Y2UtMTQxODE0MGU5 YjdmYTVlODUxYzItN2NmOS00N2UyLWIyODQtMThlMWVkYTY4M2Q1YjE3YTMyYmItZjllMS00MTFk LWJiM2UtM2JhYzUxYzI5OWI4
Java
- Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
- Comentários em Java: Tipos, Uso e Boas Práticas
- Dominando o Loop for Aprimorado em Java: Sintaxe, Exemplos e Boas Práticas
- Dominando Strings em Java: Criação, Métodos e Boas Práticas
- Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
- Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
- Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
- Anotações em Java Explicadas: Tipos, Posicionamento e Exemplos Práticos
- Asserções em Java: Guia Prático para Detectar Bugs e Garantir Confiabilidade do Código
- Entendendo o Java Vector: Uso, Recursos e Comparação com ArrayList