【8/27まで】Udemyの人気コースが今なら1,200円から!!

【Java入門】Base64エンコード・デコードする方法

Java

// Base64エンコードしたい文字列を定義
String target = "apple";

// 文字列をBase64エンコードする
byte[] result = Base64.getEncoder().encode(target.getBytes());

// 結果を出力
System.out.println(new String(result));

結果は以下のとおりです。これがappleという文字列をBase64変換した値になります。

Java

YXBwbGU=

文字列をBase64エンコードしてファイルに書き込む

以下の例は、appleという文字列をBase64変換してファイルに書き込むコードです。

Java

// 書き込み先パス
String outPutFilePath = "C:\\workspace\\result\\test.txt";

// Base64エンコードしたい文字列を定義
String target = "apple";

// 文字列をBase64エンコードする
byte[] result = Base64.getEncoder().encode(target.getBytes());

// エンコードした値をファイル出力
try(FileOutputStream stream = new FileOutputStream(outPutFilePath)){
    stream.write(result);
}

結果は以下のとおりです。
catコマンドでファイルの中身を表示しています。

Linuxコマンド

$ cat test.txt
YXBwbGU=

文字列をBase64デコードする

以下の例は、Base64デコードして、元の文字列を取り出すコードです。

Java

// Base64デコードしたい文字列を定義
String target = "YXBwbGU=";

// 文字列をBase64デコードする
byte[] decodedStr = Base64.getDecoder().decode(target);

// 結果を出力
System.out.println(new String(decodedStr));

結果は以下のとおりです。

Java

apple

文字列をBase64デコードしてファイルに出力する

以下の例は、Base64デコードして、元の文字列を取り出してファイル出力するコードです。

Java

// 書き込み先パス
String outPutFilePath = "C:\\workspace\\result\\test.txt";

// Base64デコードしたい文字列を定義
String target = "YXBwbGU=";

// 文字列をBase64デコードする
byte[] decodedStr = Base64.getDecoder().decode(target);

// デコードした値をファイル出力
try(FileOutputStream stream = new FileOutputStream(outPutFilePath)){
    stream.write(decodedStr);
}

結果は以下のとおりです。
catコマンドでファイルの中身を表示しています。

Linuxコマンド

$ cat test.txt
apple

任意のファイルをBase64エンコードする

sample.txtというファイルを用意しました。ファイルの中身は以下です。これをBase64エンコードしてみます。

Linuxコマンド

$ cat sample.txt
apple
りんご
林檎

Javaコードは以下のとおりです。

Java

// Base64エンコードしたいファイルのパス
String targetFilePath = "C:\\workspace\\result\\sample.txt";

// ファイルの内容をbyteに変換する
byte[] data = Files.readAllBytes(Paths.get(targetFilePath));

// Base64エンコードする
String base64str = Base64.getEncoder().encodeToString(data);

// 結果を出力
System.out.println(base64str);

結果は以下のとおりです。これがsample.txtというファイルをBase64変換した値になります。
このやり方だとテキストファイルに限らずzipファイルもBase64エンコードすることができます。

Java

YXBwbGUNCoLogvGCsg0Kl9GM5w==

Base64デコードしてファイルを復元する

以下は、Base64エンコード済みのファイルをデコードして元のファイルに戻すコードです。

Base64文字列がSJISの場合

Base64エンコードしたときの元のファイルがSJISの場合は、復元する場合もSJISにする必要があります。

Java

// 書き込み先パス
String outPutFilePath = "C:\\workspace\\result\\result.txt";

// Base64文字列(SJIS)
String base54Str = "YXBwbGUNCoLogvGCsg0Kl9GM5w==";

// デコードしてbyteに変換する
byte[] decodedStr = Base64.getDecoder().decode(base54Str);

// SJISでファイル出力
PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(outPutFilePath), "Shift-JIS"));
out.write(new String(decodedStr, "SJIS"));
out.close();

結果は以下のとおりです。ファイルはSJISで作成されているはずです。

Linuxコマンド

$ cat result.txt
apple
りんご
林檎

Base64文字列がUTF-8の場合

Base64エンコードしたときの元のファイルがUTF-8の場合は、復元する場合もUTF-8にする必要があります。

Java

// 書き込み先パス
String outPutFilePath = "C:\\workspace\\result\\result.txt";

// Base64文字列(UTF-8)
String base54Str = "YXBwbGUK44KK44KT44GUCuael+aqjg==";

// デコードしてbyteに変換する
byte[] decodedStr = Base64.getDecoder().decode(base54Str);

// UTF-8でファイル出力
PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(outPutFilePath), "UTF-8"));
out.write(new String(decodedStr, "UTF-8"));
out.close();

結果は以下のとおりです。ファイルはUTF-8で作成されているはずです。

Linuxコマンド

$ cat result.txt
apple
りんご
林檎

コメントを残す

メールアドレスが公開されることはありません。