如果我在DataOutput对象上调用writeUTF(String),有没有办法告诉实际写入了多少字节?
E.g:
public int write(DataOutput output) throws IOException {
output.writeUTF(this.messageString);
int numberOfBytesWritten = ???;
return numberOfBytesWritten;
}
唯一想到的方法是创建一个DataOutputStream,将字符串写入并检查大小,然后将字符串重写为实际输出。但这似乎效率低下。
答案 0 :(得分:1)
一种简单的方法是将String单独写入包装ByteArrayOutputStream的DataOutputStream,然后关闭()DataOutputStream并从BAOS获取后备字节数组,看看它有多长。
包装自己的OutputStream实现可能更简单,它覆盖单个write(int b)方法,只需为每个调用添加1到类的内部计数器,例如。
public class MyOS extends OutputStream
{
private int count = 0;
public void write(int b){ count++; }
public int getCount() { return count; }
}
...