Java UUDecode(UUEncodeのデコード)

はじめに

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

実装例

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

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
$ デコード結果=タロウ

環境

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