Java 8 Base64エンコーディング:シンプル、URL、MIME対応が標準搭載
Java 8では、ついにBase64が標準ライブラリとして搭載されました。Java 8にはBase64エンコーディング用の組み込みエンコーダとデコーダが用意されています。Java 8では、以下の3種類のBase64エンコーディングを使用できます:
シンプル(Basic) − 出力はA-Za-z0-9+/の文字セットにマッピングされます。エンコーダは出力に改行を追加せず、デコーダはA-Za-z0-9+/以外の文字を拒否します。
URL − 出力はA-Za-z0-9+_の文字セットにマッピングされます。URLおよびファイル名として安全です。
MIME − 出力はMIMEフレンドリーな形式で表現されます。出力は76文字以内の行で表され、キャリッジリターン'\r'に続けてラインフィード'\n'を行セパレータとして使用します。エンコード出力の末尾には行セパレータはありません。
ネストされたクラス
| 番号 | ネストクラスと説明 |
|---|---|
| 1 | static class Base64.Decoder RFC 4648およびRFC 2045で指定されたBase64エンコーディングスキームを使用してバイトデータをデコードするデコーダを実装します。 |
| 2 | static class Base64.Encoder RFC 4648およびRFC 2045で指定されたBase64エンコーディングスキームを使用してバイトデータをエンコードするエンコーダを実装します。 |
メソッド
| 番号 | メソッド名と説明 |
|---|---|
| 1 | static Base64.Decoder getDecoder() Basicタイプのbase64エンコーディングスキームを使用してデコードするBase64.Decoderを返します。 |
| 2 | static Base64.Encoder getEncoder() Basicタイプのbase64エンコーディングスキームを使用してエンコードするBase64.Encoderを返します。 |
| 3 | static Base64.Decoder getMimeDecoder() MIMEタイプのbase64デコーディングスキームを使用してデコードするBase64.Decoderを返します。 |
| 4 | static Base64.Encoder getMimeEncoder() MIMEタイプのbase64エンコーディングスキームを使用してエンコードするBase64.Encoderを返します。 |
| 5 | static Base64.Encoder getMimeEncoder(int lineLength, byte[] lineSeparator) 指定された行長と行セパレータを使用して、MIMEタイプのbase64エンコーディングスキームでエンコードするBase64.Encoderを返します。 |
| 6 | static Base64.Decoder getUrlDecoder() URLおよびファイル名安全タイプのbase64エンコーディングスキームを使用してデコードするBase64.Decoderを返します。 |
| 7 | static Base64.Encoder getUrlEncoder() URLおよびファイル名安全タイプのbase64エンコーディングスキームを使用してエンコードするBase64.Encoderを返します。 |
継承メソッド
このクラスは以下のクラスからメソッドを継承しています:
- java.lang.Object
Base64使用例
任意のエディタで以下のJavaプログラムを作成してください(例:C:/> JAVA)。
Java8Tester.java
Live Demoimport java.util.Base64;
import java.util.UUID;
import java.io.UnsupportedEncodingException;
public class HelloWorld {
public static void main(String args[]) {
try {
// Basicエンコーダでエンコード
String base64encodedString = Base64.getEncoder().encodeToString(
"TutorialsPoint?java8".getBytes("utf-8"));
System.out.println("Base64 Encoded String (Basic) :" + base64encodedString);
// デコード
byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString);
System.out.println("Original String: " + new String(base64decodedBytes, "utf-8"));
base64encodedString = Base64.getUrlEncoder().encodeToString(
"TutorialsPoint?java8".getBytes("utf-8"));
System.out.println("Base64 Encoded String (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("Base64 Encoded String (MIME) :" + mimeEncodedString);
} catch (UnsupportedEncodingException e) {
System.out.println("Error :" + e.getMessage());
}
}
}
実行結果の確認
javacコンパイラでコンパイルします:
C:\JAVA>javac Java8Tester.java
実行します:
C:\JAVA>java Java8Tester
以下の出力が生成されます:
Base64 Encoded String (Basic) :VHV0b3JpYWxzUG9pbnQ/amF2YTg= Original String: TutorialsPoint?java8 Base64 Encoded String (URL) :VHV0b3JpYWxzUG9pbnQ_amF2YTg= Base64 Encoded String (MIME) :YmU3NWY2ODktNGM5YS00ODlmLWI2MTUtZTVkOTk2YzQ1Njk1Y2EwZTg2OTEtMmRiZC00YTQ1LWJl NTctMTI1MWUwMTk0ZWQyNDE0NDAwYjgtYTYxOS00NDY5LTllYTctNjc1YzE3YWJhZTk1MTQ2MDQz NDItOTAyOC00ZWI0LThlOTYtZWU5YzcwNWQyYzVhMTQxMWRjYTMtY2MwNi00MzU0LTg0MTgtNGQ1 MDkwYjdiMzg2ZTY0OWU5MmUtZmNkYS00YWEwLTg0MjQtYThiOTQxNDQ2YzhhNTVhYWExZjItNjU2 Mi00YmM4LTk2ZGYtMDE4YmY5ZDZhMjkwMzM3MWUzNDMtMmQ3MS00MDczLWI0Y2UtMTQxODE0MGU5 YjdmYTVlODUxYzItN2NmOS00N2UyLWIyODQtMThlMWVkYTY4M2Q1YjE3YTMyYmItZjllMS00MTFk LWJiM2UtM2JhYzUxYzI5OWI4
Java
- エンコーダの基礎:2-1および7セグメント2進エンコーダの設計
- Java演算子をマスター:種類、構文、実践例
- Javaコメント:種類、使い方、ベストプラクティス
- Java拡張forループをマスター:構文、例、ベストプラクティス
- Java文字列をマスター:生成、メソッド、ベストプラクティス
- Javaインターフェース完全ガイド:概念、実装、ベストプラクティス
- Java無名インナークラス完全ガイド:定義、構文、実践例
- Javaのtry-with-resourcesをマスターする:自動リソース管理の仕組みと活用法
- Javaアノテーション完全ガイド:種類、配置場所、実践例
- Javaアサーション完全ガイド:バグ早期発見とコード信頼性の向上
- Java Vectorの理解:使い方、特徴、ArrayListとの比較