このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。
ええ、今日は手抜きです。手抜きですとも。
でも InputStream 作ったなら OutputStream もいるでしょ?
========== RFBOutputStream.java ==========
package jp.loafer.rfb.io;
import java.io.IOException;
import java.io.OutputStream;
import java.io.FilterOutputStream;
import java.io.DataOutputStream;
/**
* RFB の基本型を扱う出力ストリームクラス。
* @author kes
*/
public class RFBOutputStream extends FilterOutputStream {
/**
* {@link RFBOutputStream} のインスタンスを作成。
* @param out
*/
public RFBOutputStream(OutputStream out) {
super(new DataOutputStream(out));
}
/**
* 8 ビット符号なし整数を書き出す。
* @param value 8 ビット符号なし整数。
* @throws IOException 出力エラー。
*/
public void writeU8(int value) throws IOException {
((DataOutputStream)out).writeByte(value);
}
/**
* 16 ビット符号なし整数を書き出す。
* @param value 16 ビット符号なし整数。
* @throws IOException 出力エラー。
*/
public void writeU16(int value) throws IOException {
((DataOutputStream)out).writeShort(value);
}
/**
* 32 ビット符号なし整数を書き出す。
* @param value 32 ビット符号なし整数。
* @throws IOException 出力エラー。
*/
public void writeU32(long value) throws IOException {
((DataOutputStream)out).writeInt((int)value);
}
/**
* 8 ビット符号つき整数を書き出す。
* @param value 8 ビット符号つき整数。
* @throws IOException 出力エラー。
*/
public void writeS8(int value) throws IOException {
((DataOutputStream)out).writeByte(value);
}
/**
* 16 ビット符号つき整数を書き出す。
* @param value 16 ビット符号つき整数。
* @throws IOException 出力エラー。
*/
public void writeS16(int value) throws IOException {
((DataOutputStream)out).writeShort(value);
}
/**
* 32 ビット符号つき整数を書き出す。
* @param value 32 ビット符号つき整数。
* @throws IOException 出力エラー。
*/
public void writeS32(int value) throws IOException {
((DataOutputStream)out).writeInt(value);
}
/**
* 可変長文字列を書き出す。
* @param value 文字列。
* @throws IOException 出力エラー。
*/
public void writeString(String value) throws IOException {
if (value == null) {
writeS32(0);
return;
}
byte[] buffer = value.getBytes("ISO-8859-1");
writeS32(buffer.length); // U32
((DataOutputStream)out).write(buffer);
}
}
========== end of RFBOutputStream.java ==========
RFBInputStream をコピーして置換っと。
s/read/write/g;
s/Input/Output/g;
s/in/out/g; # 単語単位
s/@return/@param value/g;
s/public (\w+) (\w+)\(\)/public void $2($1 value)/g;
s/return (?:\(\w+\))?(.*)\(\);/$1(value);/g;
s/Unsigned//g;
s/読み込む/書き出す/g;
s/入力/出力/g;
後はちょこっと修正するだけで出力ストリームの完成だ。
……エディタは偉大なり。