我可以告诉多少字节写入Data Output.writeUTF?

时间:2009-12-27 22:40:06

标签: java utf-8

如果我在DataOutput对象上调用writeUTF(String),有没有办法告诉实际写入了多少字节?

E.g:

public int write(DataOutput output) throws IOException {
   output.writeUTF(this.messageString);
   int numberOfBytesWritten = ???;
   return numberOfBytesWritten;
}

唯一想到的方法是创建一个DataOutputStream,将字符串写入并检查大小,然后将字符串重写为实际输出。但这似乎效率低下。

1 个答案:

答案 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; }
}
...