Base64でエンコードするコードです。 どこにでも載ってそうなモノですが、次のネタ(データURIスキームがちょっと出てくる)で使うので一応掲載。 リダイレクトして使う事を想定。
java SimpleBase64Encoder pin.png > res.txt
お約束的なことですが、sun.misc.BASE64Encoderはいつ消えるか分からないので注意。 そういうわけでコンパイル時に警告も出ます。
import java.io.File;
import java.io.FileInputStream;
import sun.misc.BASE64Encoder;
public class SimpleBase64Encoder {
public static final long MAX_FILE_SIZE = 1000000;
public static void main(String[] args) {
if(args.length != 1)
{
System.err.println("第1引数のファイルをbase64でエンコードします。標準出力に出力します。");
return;
}
File file = new File(args[0] );
long len = file.length();
if(MAX_FILE_SIZE < len)
{
System.err.println("ファイルサイズが大きすぎる。");
return;
}
try(FileInputStream fis = new FileInputStream(file) )
{
byte[] data = new byte[ (int)len];
long readLen = fis.read(data);
if(len != readLen)
{
System.err.println("ファイル読み込み失敗");
return;
}
BASE64Encoder encoder = new BASE64Encoder();
System.out.println(encoder.encodeBuffer(data) );
}
catch(Exception exc)
{
System.err.println("ファイル読み込み or 変換失敗");
exc.printStackTrace();
}
}
}

