Java

UUDecode(UUEncodeのデコード)

はじめに

事前に以下のライブラリを用意します。

  • JavaMail API
    • http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-eeplat-419426.html#javamail-1.4.7-oth-JPR
    • ※”javamail1_4_7.zip”のリンクからダウンロード

実装例

サンプルでは、動作確認しやすいようにmainメソッドで実行できるようにしてあります。
結果だけを確認したい場合は、この記事の一番下のリンク先で使えるようにしてありますのでご覧ください。

UUDecoder.java

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.mail.MessagingException;
import javax.mail.internet.MimeUtility;

/**
 *
 * @author tool-taro.com
 */
public class UUDecoder {

	public static void main(String[] args) throws MessagingException, IOException {

		//デコードしたい文字列
		String source = "begin 644 encoder.buf\n"
				+ ")XX*_XX.MXX*F\n"
				+ " \n"
				+ "end";
		//デコード後に文字列に置き換える際のエンコーディング
		String encoding = "UTF-8";

		//デコード処理
		ByteArrayOutputStream bout = new ByteArrayOutputStream();
		InputStream in = null;

		try {
			in = MimeUtility.decode(new ByteArrayInputStream(source.getBytes(encoding)), "uuencode");
			byte[] buf = new byte[1024];
			int length;
			while (true) {
				length = in.read(buf);
				if (length == -1) {
					break;
				}
				bout.write(buf, 0, length);
			}
		}
		finally {
			if (in != null) {
				try {
					in.close();
				}
				catch (Exception e) {
				}
			}
		}

		String result = new String(bout.toByteArray(), encoding);
		//標準出力
		System.out.format("デコード結果=%1$s", result);
	}
}

動作確認

$ javac UUDecoder.java
$ java UUDecoder
$ デコード結果=タロウ

環境

  • 開発
    • Windows 10 Pro
    • JDK 1.8.0_74
    • NetBeans IDE 8.1
  • 動作検証
    • CentOS Linux release 7.2
    • JDK 1.8.0_74

上記の実装をベースにWebツールも公開しています。
UUDecode|Web便利ツール@ツールタロウ

スポンサーリンク