URLエンコードをする小さなプログラムです。 どこにでも載ってそうなモノですが、次のネタ(データURIスキーム)で使うので一応掲載。 リダイレクトして使う事を想定しています。
java SimpleUrlEncoder utf8.txt > res.txt
以下、コードです。
// SimpleUrlEncoder.java
import java.io.File;
import java.io.FileInputStream;
import java.net.URLEncoder;
public class SimpleUrlEncoder {
public static final long MAX_FILE_SIZE = 1000000;
public static void main(String[] args) {
if(args.length != 1)
{
System.err.println("第1引数のファイルをURLエンコードします。標準出力に出力します。");
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;
}
String text = new String(data, "UTF-8");
text = URLEncoder.encode(text, "UTF-8");
text = text.replaceAll("\\+", "%20");
System.out.println(text);
}
catch(Exception exc)
{
System.err.println("ファイル読み込み or 変換失敗");
exc.printStackTrace();
}
}
}